使用 SQL DESCRIPTOR 关键字

使用 INTO SQL DESCRIPTOR 创建新的系统描述符结构并将准备好语句列表的描述在此结构中。

使用 USING SQL DESCRIPTOR 子句将准备好的语句列表的描述存储在先前分配的系统描述区域中。执行 DESCRIBE INPUT . . . USING SQL DESCRIPTOR 语句以以下方式修改现有的系统描述区域:

对于不透明数据类型的列。DESCRIBE INPUT 语句会设置项目描述符的 EXTYPEID 、EXTYPENAME 、EXTYPELENGTH 、EXTYPEOWNERLENGTH 和 EXTYPEOWNERNAME 字段。

DESCRIBE INPUT 语句执行后,SCALE 和 PRECISION 字段分别包含列的小数位和精度。如果在 SET DESCRIPTOR 语句中设置 SCALE 和 PRECISION,并且将 TYPE 设置为 DECIMAL 或 MONEY,则会修改 LENGTH 字段以调整十进制值的小数位和精度。如果没有将 TYPE 设置为 DECIMAL 或 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;

系统描述符区域必须符合 X/Open 标准。