3.2.1 Базовая процедура Oracle
Базовый скалярный тип
В таблице приведены все базовые скалярные типы Orcale и соответствующие внутренние типы.
Базовый скалярный тип Oracle | Псевдонимы для типа Oracle | Внутренний тип платформы |
CHAR(n) | CHARACTER(n) | text |
NCHAR(n) | NATIONAL CHARACTER(n), | text |
VARCHAR2(n) | VARCHAR(n), | text |
NVARCHAR2(n) | NATIONAL CHARACTER VARYING(n), | text |
DATE | text | |
TIMESTAMP [(fractional_seconds)] WITH TIME ZONE | text | |
NUMBER[(p [, s])] | INTEGER, | 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 ( |
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 ( |
Базовый табличный тип для входных и выходных параметров базовой хранимой процедуры должен использовать базовый композитный тип и должен задаваться с помощью следующего синтаксиса:
CREATE FUNCTION goods_insert(items goods[]) RETURN SETOF goods... ; |
Другие синтаксические конструкции для объявления входных и выходных табличных параметров не допустимы.
3.2.3 Базовая процедура SAP
В SAP-источнике данных базовой процедурой является функциональный модуль, где тип входного параметра является базовым скалярным или базовым табличным. В свою очередь базовый табличный тип - является плоской таблицей, а базовый скалярный - тип на основе базового ABAP-типа. Работа в терминах SAP ведется с параметрами экспорта и импорта.
Для базовой процедуры SAP справедливы правила, сформированные в следующей документации: Базовые хранимые процедуры.
В таблице ниже приведены все базовые ABAP-типы и соответствующие внутренние типы. Типы должны объявляться через словарные домены.
Например, в случае, если строковый входной параметр ФМ объявляется встроенным ABAP-типом string, то система HyperHive выведет ошибку, что ФМ не является базовой хранимой процедурой. Для избежания возникновения данной ошибки, строковый параметр требуется объявлять через словарный домен.
Базовые | Внутренний |
Базовые | Внутренний |
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 | text |
text | text | |
nvarchar[(n | max)] | national character 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 ( |
Базовая хранимая процедура
Введение
В SQL Server есть хранимые процедуры и функции. Они похожи, но имеют ряд важных отличий.
Хранимые процедуры имеют ограничение на возвращаемое значение. Они не поддерживает слово RETURN. Однако, процедуры могут возвращать курсор с одной или несколькими последовательными таблицами. Синтаксис определения процедуры не позволяет задать структуру выходной таблицы. Функции не могут изменять данные на диске. Даже если внутри функции вызывать процедуру.Для реализации базовых хранимых процедур не удобно использовать функции, так как из-за их ограничения не получится реализовать сценарии с изменением данных.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |


