assignment-statement(外部例程的SQL控制语句)

赋值语句为SQL参数或SQL变量赋值。

语法

阅读语法图跳过可视化语法图SET SQL参数名称SQL变量名 = CURRENT SERVERCURRENT PACKAGESETCURRENT PACKAGE PATH表达式NULL

描述

SQL-parameter-name
标识作为赋值目标的参数。 该参数必须在CREATE PROCEDURE语句的参数声明中指定,且必须定义为OUT或INOUT。
SQL-variable-name
标识作为赋值目标的SQL变量。 SQL变量可以在复合语句中声明,且必须在使用前声明。 有关声明SQL变量的信息,请参阅复合语句
表达NULL
指定作为赋值源的表达式或值。 该表达式可以是 “表达式”中描述的任何类型,但不能包含对本地特殊寄存器的引用(CURRENT SERVER、CURRENT PACKAGESET或CURRENT PACKAGE PATH)。

注意

赋值规则 :SQL程序中的赋值语句必须符合SQL赋值规则。 例如,目标数据和源数据的类型必须兼容。 分配和比较的分配规则。

当字符串被分配给一个固定长度的变量,而字符串的长度小于目标变量的长度属性时,字符串将在右侧填充必要数量的单字节或双字节空格。 当字符串被分配给一个变量,且字符串长度超过变量的长度属性时,值将被截断并返回警告。

在处理字符串变量的赋值时,不使用编码绑定选项。 例如,假设系统不使用混合或双字节字符集,且系统EBCDIC SBCS CCSID为37。 即使为过程包的编码绑定参数指定了CCSID 500,赋值时也不会进行字符转换。

如果将数字赋值给一个数字变量时,数字的某部分被截断,则该值将被截断并返回一个警告。

涉及SQL参数的任务:

  • IN参数可以出现在赋值语句的左侧。 当控制权返回给调用方时,IN参数的原始值将传递给调用方。
  • OUT参数可以出现在赋值语句的左侧或右侧。 当控制权返回给调用方时,分配给OUT参数的最后一个值将返回给调用方。
  • INOUT参数可以出现在赋值语句的左侧或右侧。 参数的第一个值由调用者确定,最后一个值将返回给调用者。
  • 当连接到远程站点时,LOB参数不能作为SQL语句中的输出值。 要规避限制,请使用LOB SQL变量代替LOB参数。

SQLSTATE和SQLCODE注意事项 SQL变量 :不禁止对这些变量进行赋值。 但是,不建议使用此功能,因为任务不会影响诊断区域,也不会导致条件处理程序的激活。 此外,处理这些SQL变量的赋值会导致赋值的指定值与执行赋值语句返回的SQL返回代码叠加。

示例

将SQL变量 p_salary 增加10%。

SET p_salary = p_salary + (p_salary * .10)

将SQL变量 p_salary 设置为空值。

SET p_salary = NULL

将SQL变量 midinit 设置为SQL变量 midname 的第一个字符。

SET midinit = SUBSTR(midname,1,1)