DECLARE [{, }...] [CONSTANT] | AUTO [NOT NULL] ::= (DEFAULT | '=' ) | 缺省值表达式分配。
!!= An element of the type specified by 要分配给变量的值。
局部变量是使用 DECLARE 关键字声明的,并且可以选择使用它们的声明对其进行初始化。缺省情况下,标量变量使用 NULL 进行初始化。如上所述,可以使用 var 引用标量变量 :var。
提示如果要访问变量的值,请在代码中使用 :var。如果要为变量赋值,请在代码中使用 var。
可以多次分配,覆盖存储在标量变量中的先前值。使用 = 运算符执行分配。
建议即使 := 运算符仍然可用,SAP 建议您仅在定义标量变量时使用 = 运算符。
变量名称支持字母数字字符、#、$ 和 _。由于变量名称是一种标识符,因此也支持区分大小写的名称。
备注在 中,服务器处理时,不带双引号的 SQL 语法标识符将转换为大写。例如,语句 CREATE COLUMN TABLE MyTAB... 创建一个名为 MYTAB 的表,而 CREATE COLUMN TABLE "MyTab" 创建一个名为 MyTab 的表,并且两个表都可以在数据库中共存。允许指定不带双引号的标识符,但稍后在查询或执行区分大小写对象名称的操作时,会导致歧义。建议在 SQL 语句中将所有标识符用双引号引起来,其中可能会涉及歧义。
CREATE PROCEDURE proc (OUT z INT) LANGUAGE SQLSCRIPT READS SQL DATA
AS
BEGIN
DECLARE a int;
DECLARE b int = 0;
DECLARE c int DEFAULT 0;
t = select * from baseTable ;
select count(*) into a from :t;
b = :a + 1;
z = :b + :c;
end;
此示例显示进行声明和分配的各种方法。
备注您可以将标量 UDF 分配给具有 1 个或多个 输出的标量变量,如以下代码示例所示。使用 SQL 语句使用结果:DECLARE i INTEGER DEFAULT 0;SELECT SUDF_ADD(:input1, :input2) into i from dummy;将标量 UDF 分配到标量变量:DECLARE i INTEGER DEFAULT 0;i = SUDF_ADD(:input1, :input2);将具有多个 输出的标量 UDF 分配给标量变量:DECLARE i INTEGER DEFAULT 0;DECLARE j NVARCHAR(5);(i,j) = SUDF_EXPR(:input1);DECLARE a INTEGER DEFAULT 0;a = SUDF_EXPR(:input1).x; 在以下示例中,第一个变量被视为 "MYVAR" ,因为它不是双引号的。第二个变量被视为 "MyVar" ,与第一个变量不同。引用第二个变量应由 :"MyVar" 执行,包括冒号和双引号。
DO BEGIN
DECLARE myvar INT = 0;
DECLARE "MyVar" INT = 1;
SELECT
:myvar /* the first variable */,
:"MyVar" /* the second variable */
from dummy;
END;