Могут принимать ноль или более входных параметров. Все входные параметры должны иметь имя. Тип входного параметра должен быть базовым скалярным или базовым табличным. Требования к этим типам описаны для каждого источника данных. Должно быть одно возвращаемое значение, которое должно быть базового табличного типа. Других возвращаемых значений быть не должно. Типы входных и выходных параметров должны быть заданы на этапе создания процедуры, т. е. не могут меняться во время выполнения процедуры.

3.2.1 Базовая процедура Oracle


Базовый скалярный тип

В таблице приведены все базовые скалярные типы Orcale и соответствующие внутренние типы.

Базовый скалярный тип Oracle

Псевдонимы для типа Oracle

Внутренний тип платформы

CHAR(n)

CHARACTER(n)

text

NCHAR(n)

NATIONAL CHARACTER(n),
NATIONAL CHAR(n),
NCHAR(n)

text

VARCHAR2(n)

VARCHAR(n),
CHARACTER VARYING(n),
CHAR VARYING(n)

text

NVARCHAR2(n)

NATIONAL CHARACTER VARYING(n),
NATIONAL CHAR VARYING(n),
NCHAR VARYING(n)

text

DATE

text

TIMESTAMP [(fractional_seconds)] WITH TIME ZONE

text

NUMBER[(p [, s])]

INTEGER,
INT,
SMALLINT,
DECIMAL[(p, s)],
NUMERIC[(p, s)]

double

FLOAT[(p)]

REAL, DOUBLE PRECISION

double

BLOB

bytea

Подробное описание типов доступно в документации Oracle: типы с псевдонимами.

Замечания.

Преобразование Oracle-типов NUMBER и FLOAT в типы платформы, возможно, может привести к существенной потере точности. Так ли это, буде установлено в ходе тестирования пограничных значений. В Oracle есть тип INTEGER, который является псевдонимом для NUMBER(38). Т. е. это целое число с точностью 38 десятичных символов. Внутренний тип платформы bigint может хранить только 19 десятичных символов, поэтому Oracle-тип INTEGER мы должны конвертировать во внутренний тип double. Преобразование приведет к существенной потере точности. Было бы можно преобразовывать NUMBER(19) в bigint, но мы не ставим такого требования. В случае, если при работе с типами: NCHAR и NVARCHAR2, требуется использовать специфические языки Unicode (например, арабская вязь), то при проектировании БД следует выставлять параметр nls_lang: UTF-8. При этом, если уже используется параметр nls_lang отличный от UTF-8, например, american_america. CL8MSWIN1251, то можно использовать UNISTR-функцию, позволяющую преобразовывать строку к unicode, в этом случае на вход будет требоваться отправлять коды символов специфического языка. Коды можно взять из этой документации: https://.

Базовый табличный тип

При создании базового табличного типа нужно использовать синтаксис, как показано в примере создания базового табличного типа fruitsTable.

НЕ нашли? Не то? Что вы ищете?

TYPE fruitsFieldsRow IS RECORD (
r_id NUMBER,
r_name VARCHAR2(4000)
);

TYPE fruitsTable IS TABLE OF fruitsFieldsRow;


3.2.2 Базовая процедура Postgres

Базовый скалярный тип

В таблице приведены все базовые скалярные типы Postgres и соответствующие внутренние типы.

Базовый скалярный тип Postgres

Псевдонимы типа Postgres

Внутренний тип платформы

smallint

int2

bigint

integer

int, int4

bigint

bigint

int8

bigint

numeric[(p, s)]

decimal[(p, s)]

text

real

float4

double

double precision

float8

double

boolean

bool

bigint

bytea

bytea

character[(n)]

char[(n)]

text

character varying [(n)]

varchar[(n)]

text

text

text

date

text

timestamp [(p)] without time zone

timestamptz

text

Подробное описание типов можно найти в документации Postgres.

Базовый табличный тип

Базовый композитный тип – композитный тип, который состоит из базовых скалярных типов. Внутри базового композитного типа не может быть другого композитного типа. Важно не путать композитный тип с типом ROWTYPE или типом RECORD. Базовый композитный тип должен быть явно объявлен с помощью конструкции "CREATE TYPE" как показано в примере:


CREATE TYPE goods AS (
id INTEGER,
name VARCHAR(100)
);


Базовый табличный тип для входных и выходных параметров базовой хранимой процедуры должен использовать базовый композитный тип и должен задаваться с помощью следующего синтаксиса:

CREATE FUNCTION goods_insert(items goods[]) RETURN SETOF goods... ;

Другие синтаксические конструкции для объявления входных и выходных табличных параметров не допустимы.

3.2.3 Базовая процедура SAP

В SAP-источнике данных базовой процедурой является функциональный модуль, где тип входного параметра является базовым скалярным или базовым табличным. В свою очередь базовый табличный тип - является плоской таблицей, а базовый скалярный - тип на основе базового ABAP-типа. Работа в терминах SAP ведется с параметрами экспорта и импорта.

Для базовой процедуры SAP справедливы правила, сформированные в следующей документации: Базовые хранимые процедуры.

В таблице ниже приведены все базовые ABAP-типы и соответствующие внутренние типы. Типы должны объявляться через словарные домены.

Например, в случае, если строковый входной параметр ФМ объявляется встроенным ABAP-типом string, то система HyperHive выведет ошибку, что ФМ не является базовой хранимой процедурой. Для избежания возникновения данной ошибки, строковый параметр требуется объявлять через словарный домен.

Базовые
ABAP-типы

Внутренний
тип платформы

Базовые
ABAP-типы

Внутренний
тип платформы

C

text

STRING (g)

text

N

text

D

text

T

text

I

bigint

b

bigint

s

bigint

P

double

F

double

X

bytea

XSTRING (y)

bytea

Подробное описание типов можно найти здесь:

    Predefined Elementary ABAP Types, http://help-legacy. /abapdocu_70/en/ABENBUILT_IN_TYPES_COMPLETE. htm.

Внимание!

Базовые ABAP-типы не поддерживают значение NULL. ABAP-тип D (дата) поддерживает особое значение 0000-00-00, которого нет в Григорианском календаре. Значению 0000-00-00 ABAP-типа D соответствует значение NULL HyperHive-типа text. Других случаев, когда ABAP-значению соответствует HyperHive-значение NULL, нет.

3.2.4 Базовая процедура SQL Server

Базовые типы данных

Базовый скалярный тип SQL Server

Псевдонимы базового скалярного типа SQL Server

Тип HyperHive

int

integer

bigint

bigint

bigint

decimal[(p[, s]]

Dec[(p[, s]]

double

numeric[(p[, s]]

double

float[(n)]

double

datetimeoffset

text

varchar[(n | max)]

char varying
character varying (n)

text

text

text

nvarchar[(n | max)]

national character varying (n)
national char varying (n)

text

ntext

national text

text

varbinary[(n | max)]

binary varying (n)

bytea

Подробное описание типов SQL Server можно найти в документации: Data Types (Transact-SQL), Data Type Synonyms (Transact-SQL).

Базовый табличный тип

Базовый табличный тип должен объявляться с помощью синтаксиса "CREATE TYPE... AS TABLE...", который приведен в примере.

CREATE TYPE fruitsTable AS TABLE (
id int,
name nvarchar(100) NULL
)

Базовая хранимая процедура

Введение

В SQL Server есть хранимые процедуры и функции. Они похожи, но имеют ряд важных отличий.

Хранимые процедуры имеют ограничение на возвращаемое значение. Они не поддерживает слово RETURN. Однако, процедуры могут возвращать курсор с одной или несколькими последовательными таблицами. Синтаксис определения процедуры не позволяет задать структуру выходной таблицы. Функции не могут изменять данные на диске. Даже если внутри функции вызывать процедуру.

Для реализации базовых хранимых процедур не удобно использовать функции, так как из-за их ограничения не получится реализовать сценарии с изменением данных.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17