SET CONNECTION 语句

SET CONNECTION语句通过识别现有连接之一来建立进程的数据库服务器。

调用 SET CONNECTION

此语句只能嵌入在应用程序中。 这是一个无法动态准备的可执行语句。 Java™中不能指定。

授权 SET CONNECTION

不需要执行任何操作。

语法 SET CONNECTION

阅读语法图跳过可视化语法图SET CONNECTION 地点名称宿主变量

描述 SET CONNECTION

位置名称 主机变量
通过指定位置名称或主机变量中的位置名称识别 SQL 连接。 如果指定了宿主变量:
  • 它必须是一个字符串变量,长度属性不能超过16。 (一个以空格字符结尾的字符串最多可达17个字节。)
  • 其后不能跟指示变量。
  • 在宿主变量中,位置名称必须左对齐,且必须符合普通位置标识符的规则。
  • 如果地点名称的长度小于宿主变量的长度,则必须在右边用空格补齐。
设S为指定位置名称或宿主变量中包含的位置名称。 S必须识别应用程序进程的现有SQL连接。 如果 S 标识了当前的 SQL 连接,则 S 的状态以及应用程序进程的所有其他连接均保持不变。 当S识别出休眠的SQL连接时,以下规则适用。

如果SET CONNECTION语句成功:

  • SQL连接S处于当前状态。
  • S 位于 CURRENT SERVER 特殊寄存器中。
  • 服务器S的相关信息被放置在SQLCA的SQLERRP字段中。 如果服务器是 IBM® 产品,信息格式为 pppvvrrm
    产品标识符(PRDID)值是一个8字节字符值,采用 pppvvrrm格式 ,其中: ppp 是3个字母的产品代码; vv 是版本;rr 是发行版; m 是修改级别。 Db2 12 for z/OS® 中,修改级别表示一系列功能级别:
    • DSN12015适用于 V12R1M500 或更高版本。
    • DSN12010致 V12R1M100。
    更改开始更多信息,请参阅 Db2 for z/OS 中的产品标识符(PRDID)值更改结束
  • 任何先前正在运行的SQL连接都将进入休眠状态。

如果SET CONNECTION语句执行失败,应用程序进程的连接状态及其SQL连接的状态将保持不变。

备注 SET CONNECTION

CONNECT(类型1)之后的SET CONNECTION :使用CONNECT(类型1)语句不会阻止SET CONNECTION的使用,但由于不活跃的SQL连接不存在,该语句要么失败,要么不起作用。 SQLRULES( DB2 )绑定选项并不妨碍使用SET CONNECTION,但该语句是不必要的,因为可以使用CONNECT (Type 2)语句来代替。 使用SET CONNECTION语句符合SQL标准。

锁、游标和准备好的语句的状态: 当 SQL 连接被使用、置于休眠状态,然后在同一工作单元中恢复到当前状态时,该 SQL 连接的锁、游标和准备好的语句的状态反映了应用程序进程对该连接的最后一次使用。

宿主变量 :如果SET CONNECTION语句包含宿主变量,则宿主变量的内容应采用绑定包含该语句的程序包或计划时ENCODING参数中指定的编码方案。

数组类型和数组变量的限制: 在任何除 CALL 语句之外的 SQL 语句中,在远程服务器上建立连接后,不得引用数组类型和数组变量。 此限制包括在远程服务器上执行的 SQL 语句,该语句由解析为远程服务器上对象的三个部分名称或别名组成。 一个例外是,即使在远程服务器上执行语句,数组元素也可以是SQL程序中FETCH、SELECT INTO、SET 赋值语句或VALUES INTO语句的目标。

示例 SET CONNECTION

在 TOROLAB1 处执行SQL语句,在 TOROLAB2 处执行SQL语句,然后在 TOROLAB1 处执行更多SQL语句。
  EXEC SQL CONNECT TO TOROLAB1;
 
    -- execute statements referencing objects at TOROLAB1
 
  EXEC SQL CONNECT TO TOROLAB2;
 
    -- execute statements referencing objects at TOROLAB2
 
  EXEC SQL SET CONNECTION TOROLAB1;
 
    -- execute statements referencing objects at TOROLAB1

第一个CONNECT语句创建 TOROLAB1 连接,第二个CONNECT语句将其置于休眠状态,SET CONNECTION语句将其恢复为当前状态。