CREATE FUNCTION sel_text() RETURNING REFERENCES text; DEFINE blob_var REFERENCES text; SELECT blob_col INTO blob_var FROM blob_table WHERE key_col = 10; RETURN blob_var; END FUNCTION;
对于作为查询的 Projection 列表中的列值的简单大对象,如在此示例中,返回的描述符中的指针根据 BYTE 或 TEXT 列定义从系统目录引用 sysblobs.spacename 值。
然而,对于不对应于永久表的列的简单大对象,指针引用定义了 UDR 的数据库的 dbspace 。这是当数据库服务器不指定 sysblobs 表的位置时,UDR 返回的 BYTE 或 TEXT 对象的缺省存储位置。
以下示例中的 DB-Access 会话创建两个例程 udr1 和 udr2,每个返回一个 TEXT 对象:
CREATE DATABASE db WITH LOG; CREATE TABLE t (c2 TEXT); CREATE TABLE t1 (c2 TEXT); LOAD FROM "t.unl" INSERT INTO t; CREATE FUNCTION udr1 ( param_1 REFERENCES TEXT DEFAULT NULL ) RETURNING REFERENCES TEXT WITH (NOT VARIANT) DEFINE var1 REFERENCES TEXT; ON EXCEPTION RETURN param_1; END EXCEPTION; SELECT t.c2 udr1_col1 INTO var1 FROM t; RETURN var1; END FUNCTION; CREATE PROCEDURE udr2 ( OUT param_1 REFERENCES TEXT DEFAULT NULL ) RETURNING INT; SELECT t.c2 udr1_col1 INTO param_1 FROM t; RETURN 1; END PROCEDURE; SELECT udr1(t.c2) query_1_col1 FROM t INTO TEMP mytemp; SELECT c2, slv1 FROM t1 WHERE udr2(slv1#TEXT) > 0 INTO TEMP mytemp;
在调用这些 UDR 的 SELECT 语句中,每个查询返回到 mytemp 临时表的 TEXT 对象存储在 db 数据库的 dbspace 中。