使用 SQL DESCRIPTOR 关键字

使用USING SQL DESCRIPTOR 子句可将对准备好的语句列表的描述存储在先前分配的系统描述符区域中。

使用 INTO SQL DESCRIPTOR 子句创建新的系统描述符结构并将语句列表的描述存储在该结构中。

要将一个先前提到的语言描述到一个系统描述符区域,DESCRIBE 会以以下方式更新系统描述符区域:

在执行 DESCRIBE 语句之后,SCALE 和 PRECISION 字段分别包含列的小数位和精度。如果在 SET DESCRIPTOR 语句中设置了 SCALE 和 PRECISION ,并且将 TYPE 设置为 DECIMAL 或 MONEY,则会修改 LENGTH 字段以调整十进制值的小数位和精度。如果没有将 TYPE 设置为 ECIMAL 或 MONEY,则不设置 SCALE 和 PRECISION 的值,并且 LENGTH 不受影响。

您必须使用 SET DESCRIPTOR 语句修改系统描述符区域信息,以显示要接收描述符的值在内存中的地址。可以将数据类型更改为另一种兼容的类型。此更改会在取得数据值时引起数据转换的发生。

您可以在支持 USING SQL DESCRIPTOR 子句(如 EXECUTE 、FETCH 、OPEN 和 PUT)的准备好的语句中使用系统描述符区域。

下面的示例显示了 DESCRIBE 语句中对系统描述符的使用。在第一个示例中,系统描述符是一个用引号引起的字符串;在第二个示例中,它是一个嵌入的变量名称。
main()
                                {
                                . . .
                                EXEC SQL allocate descriptor 'desc1' with max 3;
                                EXEC SQL prepare curs1 FROM 'select * from tab';
                                EXEC SQL describe curs1 using sql descriptor 'desc1';
                                }
                                EXEC SQL describe curs1 using sql descriptor :desc1var;