例: 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 が呼び出されると、関数はアンカー・データ・タイプ・パラメーターの値を使用して基本操作を実行します。