示例:SQL 例程中的锚定位数据类型用法

创建您自己的 SQL 例程时,可参考 SQL 例程中的锚定位数据类型用法示例。

下面的一组示例演示各种功能及 SQL 例程中的锚定位数据类型用法。所演示锚定位数据类型功能比包含它们的 SQL 例程的功能更多。

以下示例演示定位至表中某列的数据类型的已声明变量:
CREATE TABLE tab1(col1 INT, col2 CHAR)@

INSERT INTO tab1 VALUES (1,2)@

INSERT INTO tab1 VALUES (3,4)@

CREATE TABLE tab2 (col1a INT, col2a CHAR)@

CREATE PROCEDURE p1()
BEGIN
  DECLARE var1 ANCHOR tab1.col1;
  SELECT col1 INTO var1 FROM tab1 WHERE col2 = 2;
  INSERT INTO tab2 VALUES (var1, 'a');
END@

CALL p1()@
调用过程 p1 时,特定行的列 col1 的值会被选择到相同类型的变量 var1 中。
以下 CLP 脚本包括某个函数的示例,其中演示函数参数的锚定位数据类型用法:
-- Create a table with multiple columns
CREATE TABLE tt1 (c1 VARCHAR(18), c2 CHAR(8), c3 INT, c4 FLOAT)
@

INSERT INTO tt1 VALUES ('aaabbb', 'ab', 1, 1.1)
@

INSERT INTO tt1 VALUES ('cccddd', 'cd', 2, 2.2)
@

SELECT c1, c2, c3, c4 FROM tt1
@

-- Creation of the function
CREATE FUNCTION func_a(p1 ANCHOR tt1.c3)
 RETURNS INT
 BEGIN
   RETURN p1 + 1;
 END
@

-- Invocation of the function
SELECT c1, c2 FROM tt1 WHERE c3 = func_a(2)
@

-- Another invocation of the function
SELECT c1, c2 FROM tt1 WHERE c3 = func_a(1)
@

DROP FUNCTION func_a
@

DROP TABLE tt1
@
调用函数 func_a 时,该函数会使用锚定位数据类型参数的值执行基本操作。