ГОСТ Р ИСО 13584-20—2006
END IF;
IF (’IS013584_EXPRESSIONS_SCHEMA.INDEX_EXPRESSION’ IN TYPEOF(arg))
OR (’IS013584_EXPRESSIONS SCHEMA.SUBSTRING_EXPRESSION’
IN TYPEOF(arg))
OR CIS013584_EXPRESSIONS_SCHEMA.CONCAT_EXPRESSION•
IN TYPEOF(arg))
OR (’IS013584 EXPRESSI0NS SCHEMA.FORMATJ4JNCTION’
IN TYPEOF(arg))
THEN
RETURN (FALSE);
ENDJF,
(* Если встречаетсядругое generic_exprossion. которое не является подтипом SQL_mappable_defined_
function, то оно не является отображаемым наязыке SQL *)
RETURN (FALSE);
END_FUNCTION; --is_SQL_mappab!e
Г
6.6.3 Функция used_functions
Функция used_functions просматривает весь граф выражения, собирая все функции
application_defined. и в результате возвращает их. Данная функция просматривает ориентированный
ациклический граф, представляющий выражение.
П р и м е ч а н и е — Эта функция является ресурсом для схем, использующих IS013584_expresstons_
schema или ее возможные конкретизации. Например, она используется а некоторых частях комплекса стандартов
ИСО 13584 для записи ограничений на функции, встречающиеся в выражениях.
EXPRESS-спецификация
*)
FUNCTION used_functions (arg:expression): SET OF defmed_function.
LOCAL
result: SETOF defined function := Q:
END_LOCAL:
IF {’IS013584_EXPRESSIONS_SCHEMA.DEFINEDJUNCTION’ IN TYPEOF(arg))
THEN
RETURN ([arg]);
ENDJF;
IF’IS013584_EXPRESSI0NS_SCHEMA.UNARY_NUMERIC_EXPRESSI0N’ IN
TYPEOF (arg)
THEN
RETURN (usedJunctions (arg\unary numeric_expression.operand));
ENDJF;
IF’IS013584_EXPRESSI0NS_SCHEMA.BINARY NUMERIC EXPRESSION’ IN
TYPEOF (arg)
THEN
RETURN (usedJunctions (arg\binary_numeric_expression.operands[1])
+ used Junctions (arg\binary_numeric_expression.operands[2])));
ENDJF;
IF‘IS013584_EXPRESSI0NS_SCHEMA.MULTIPLE_ARITY_NUMERIC_EXPRESSI0N’ IN
TYPEOF (arg)
THEN
REPEATi:=1 TO SIZEOF(
arg\multiple_arity_numeric_expression.operands);
result ;= result ♦ used Junctions (
arg\multiple_arity_numeric_expression.operands[i]);
END_REPEAT;
RETURN (result);
END_IF;
42