使用USING SQL DESCRIPTOR 子句可将对准备好的语句列表的描述存储在先前分配的系统描述符区域中。
使用 INTO SQL DESCRIPTOR 子句创建新的系统描述符结构并将语句列表的描述存储在该结构中。
如果列具有不透明数据类型,则数据库服务器会设置项描述符的 EXTYPEID 、EXTYPENAME 、EXTYPELENGTH 、EXTYPEOWNERLENGTH 和 EXTYPEOWNERNAME 字段。
在执行 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)的准备好的语句中使用系统描述符区域。
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;