すべてのプロダクト
Search
ドキュメントセンター

PolarDB:DBMS_SQL

最終更新日:Jun 04, 2024

組み込みのDBMS_SQLパッケージは、アプリケーションのランタイム中にSQL文を動的に実行する動的SQLクエリを提供します。

サブプログラム

サブプログラム

説明

BIND_ARRAYプロシージャ

配列型の値を変数にバインドします。

BIND_VARIABLEプロシージャ

値を変数にバインドします。

BIND_VARIABLE_CHARプロシージャ

CHAR型の値を変数にバインドします。

BIND_VARIABLE_RAWプロシージャ

RAW型の値を変数にバインドします。

CLOSE_CURSORプロシージャ

カーソルを無効にします。

COLUMN_VALUEプロシージャ

カーソル内の位置にある要素の値を返します。

COLUMN_VALUE_CHARプロシージャ

カーソル内の位置にあるCHAR型の列の値を返します。

COLUMN_VALUE_LONGプロシージャ

カーソル内の位置にあるLONG型の列の値を返します。

COLUMN_VALUE_RAWプロシージャ

カーソル内の位置にあるRAW型の列の値を返します。

DEFINE_ARRAYプロシージャ

カーソルから選択する配列を定義します。

DEFINE_COLUMNプロシージャ

カーソルから選択する列を定義します。

DEFINE_COLUMN_CHARプロシージャ

カーソルから選択するCHARタイプの列を定義します。

DEFINE_COLUMN_LONGプロシージャ

カーソルから選択するLONGタイプの列を定義します。

DEFINE_COLUMN_RAWプロシージャ

カーソルから選択するRAWタイプの列を定義します。

EXECUTE関数

カーソルを実行します。

EXECUTE_AND_FETCH関数

カーソルを実行し、行データをフェッチします。

FETCH_ROWS関数

カーソルから行データを取得します。

IS_OPEN関数

カーソルを開くかどうかを決定します。

LAST_ROW_COUNT関数

フェッチされた行の累積数をカウントします。

OPEN_CURSOR関数

新しく開いたカーソルのIDを返します。

PARSEプロシージャ

文を解析します。

VARIABLE_VALUEプロシージャ

カーソル内の名前付き変数の値を返します。

VARIABLE_VALUE_CHARプロシージャ

カーソル内のCHAR型の名前付き変数の値を返します。

VARIABLE_VALUE_RAWプロシージャ

カーソル内のRAW型の名前付き変数の値を返します。

データ型

VARCHAR2A

タイプvarchar2aはvarchar2(32767) のテーブルです;

VARCHAR2S

タイプvarchar2sはvarchar2(256) のテーブルです;

BIND_ARRAY

このストアドプロシージャは、配列型の値を変数にバインドするために使用されます。

構文

<bx id="1" type="code" text="code id=" s4fmuy "title=" "uuid=" lk52qpnxv8v81i23n2j "code=" DBMS_SQL.BIND_ARRAY (
cでインテガー、VARCHAR2の名前、ANYARRAYの値
[, INTEGERでindex1,
index2 IN INTEGER]; "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.BIND_ARRAY ( 
   cでインテガー、 
   VARCHAR2の名前、 
   ANYARRAYの値
 [, INTEGERでindex1, 
   INTEGERのindex2] ); 

Parameters

パラメーター

説明

c

バインドする値のカーソルID。

name

ステートメント内の配列の名前。

value

バインドするローカル変数。

index1

(オプション) 配列範囲の下限を示すインデックス。 デフォルト値: -1。

index2

(オプション) 配列範囲の上限を示すインデックス。 デフォルト値: -1。

次の例は、BIND_ARRAYストアドプロシージャを使用して、複数行のデータを宛先テーブルに挿入する方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(a int, b varchar2, c numeric);

DECLARE
c int;
int[];
b varchar[];
ca numeric[];
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c、'insert into test values(:a、: b、: c)'、DBMS_SQL.NATIVE);
a :=アレイ [1, 2, 3];
b := ARRAY['Alice' 、'Bob' 、'Cindy'];
ca :=アレイ [5, 4, 3];

DBMS_SQL.BIND_ARRAY(c、'a' 、a);
DBMS_SQL.BIND_ARRAY(c、'b' 、b);
DBMS_SQL.BIND_ARRAY(c、'c' 、ca);
-- 挿入された行: 3
DBMS_OUTPUT.PUT_LINE('inserted rows: '| | DBMS_SQL.EXECUTE(c));
DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テスト注文から1、2、3;
a | b | c
--- ------- -----
1 | アリス | 5
2 | ボブ | 4
3 | シンディ | 3
(3行) "id=" q0sdkw "title=" "uuid=" lk52wjpube59pglt2ei "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(a int、b varchar2、c数値);

DECLARE
  c int;
  int[];
  b varchar[];
  ca numeric[];
開始
  c := DBMS_SQL.OPEN_CURSOR();
  DBMS_SQL.PARSE(c、'insert into test values(:a、: b、: c)'、DBMS_SQL.NATIVE);
  a :=アレイ [1, 2, 3];
  b := ARRAY['Alice' 、'Bob' 、'Cindy'];
  ca :=アレイ [5, 4, 3];

  DBMS_SQL.BIND_ARRAY(c、'a' 、a);
  DBMS_SQL.BIND_ARRAY(c、'b' 、b);
  DBMS_SQL.BIND_ARRAY(c、'c' 、ca);
-- 挿入された行: 3
  DBMS_OUTPUT.PUT_LINE('inserted rows: '| | DBMS_SQL.EXECUTE(c));
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テスト注文から1、2、3;
 a | b | c
--- ------- -----
 1 | アリス | 5
 2 | ボブ | 4
 3 | シンディ | 3
(3行) 

BIND_VARIABLE

このストアドプロシージャは、値を変数にバインドするために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.BIND_VARIABLE ()
cでインテガー、VARCHAR2の名前、値IN VARCHAR2、out_value_size IN INTEGER DEFAULT -1);"id=" 86proy "title=" "uuuid=" lk53dovr94mceenuf5p "data-tag=" codeblock "outputclass=" language-plsql "" "/>DBMS_SQL.BIND_VARIABLE (
   cでインテガー、
   VARCHAR2の名前、
   値IN VARCHAR2、
   INTEGER DEFAULT -1のout_value_size; 

Parameters

パラメーター

説明

c

バインドする値のカーソルID。

name

ステートメント内の変数の名前。

value

バインドするローカル変数。

out_value_size

(オプション) OUT変数の最大予想バイトサイズ。 デフォルト値: -1。

次の例は、BIND_VARIABLEストアドプロシージャを使用して変数をバインドする方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for varchar2');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
c_var VARCHAR2(25);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、DBMS_SQL.NATIVE);

id_var := 1;
c_var := 'bind_variable_varchar2 ';

DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.BIND_VARIABLE(c、'n' 、c_var、25);

ignore := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);

-- 返されるVARCHARは、bind_variable_varchar2です。DBMS_OUTPUT.PUT_LINE('VARCHARが返されます: '| | c_var);
DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"id=" 41rowx "title=" "uuid=" lk53mpg3e09p6gqi2cg "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for varchar2');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  c_var VARCHAR2(25);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、
      DBMS_SQL.NATIVE); 
  
  id_var := 1;
  c_var := 'bind_variable_varchar2 ';
  
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.BIND_VARIABLE(c、'n' 、c_var、25);
  
  ignore := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);
  
  -- 返されるVARCHARは、bind_variable_varchar2です。
  DBMS_OUTPUT.PUT_LINE('VARCHARが返されます: '| | c_var);
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

BIND_VARIABLE_CHAR

このストアドプロシージャは、CHAR型の値を変数にバインドするために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.BIND_VARIABLE_CHAR (
cでインテガー、VARCHAR2の名前、CHARの値、out_value_size IN INTEGER DEFAULT -1; "id=" gfewra "title=" "uuid=" lk53rxg13v5lquznr7g "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.BIND_VARIABLE_CHAR (
   cでインテガー、
   VARCHAR2の名前、
   CHARの値、
   INTEGER DEFAULT -1のout_value_size; 

Parameters

パラメーター

説明

c

バインドする値のカーソルID。

name

ステートメント内の変数の名前。

value

バインドするCHAR型のローカル変数。

out_value_size

(オプション) OUT変数の最大予想バイトサイズ。 デフォルト値: -1。

次の例は、CHAR型の変数をバインドする方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for char');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
c_var CHAR(25);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、DBMS_SQL.NATIVE);

id_var := 1;
c_var := 'bind_variable_char ';

DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.BIND_VARIABLE_CHAR(c、'n' 、c_var、25);

ignore := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);

-- CHAR返されます: bind_variable_char
DBMS_OUTPUT.PUT_LINE('CHAR returned is:'| | c_var);
DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"id=" 5v8rdf "title=" "uuid=" lk53urgeg3gq3utho8a "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for char');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  c_var CHAR(25);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、
      DBMS_SQL.NATIVE); 
  
  id_var := 1;
  c_var := 'bind_variable_char ';
  
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.BIND_VARIABLE_CHAR(c、'n' 、c_var、25);
  
  ignore := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);
  
  -- CHAR返されます: bind_variable_char
  DBMS_OUTPUT.PUT_LINE('CHAR returned is:'| | c_var);
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

BIND_VARIABLE_RAW

このストアドプロシージャは、RAWタイプの値を変数にバインドするために使用されます。

構文

<bx id="1" type="code" text="code id=" 5iagat "title=" "uuid=" lk53wx5zgbgtgkkpmub "code=" DBMS_SQL.BIND_VARIABLE_RAW ()
cでインテガー、VARCHAR2の名前、RAWでの値、"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.BIND_VARIABLE_RAW (INTEGER DEFAULT -1);
   cでインテガー、
   VARCHAR2の名前、
   RAWでの値、
   INTEGER DEFAULT -1のout_value_size; 

Parameters

パラメーター

説明

c

バインドする値のカーソルID。

name

ステートメント内の変数の名前。

value

バインドするRAW型のローカル変数。

out_value_size

(オプション) OUT変数の最大予想バイトサイズ。 デフォルト値: -1。

次の例は、RAW型の変数をバインドする方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
c番号;
番号を無視します。id_var NUMBER;
r_var RAW(20);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、DBMS_SQL.NATIVE);
id_var := 1;
r_var :='aaaabbbbcc';
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.BIND_VARIABLE_RAW(c、'n' 、r_var、utl_raw.length(r_var));
ignore := DBMS_SQL.EXECUTE(c);

DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テストからORDER BY 1, 2;
id | c
---- + ----------------------------
1 | \x61616161616262626263636363
(1行) "id=" nhlzhq "title=" "uuid=" lk53yd7r29sykjnz0vu "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  r_var RAW(20);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  r_var :='aaaabbbbcc';
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.BIND_VARIABLE_RAW(c、'n' 、r_var、utl_raw.length(r_var));
  ignore := DBMS_SQL.EXECUTE(c);

  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テストからORDER BY 1, 2;
 id | c
---- + ----------------------------
  1 | \x61616161616262626263636363
(1行) 

CLOSE_CURSOR

このストアドプロシージャは、カーソルを無効にするために使用されます。

構文

<bx id="1" type="code" text="code id=" 4g24qf "title=" "uuid=" lk54wg5zpg9erbcjn6 "code=" DBMS_SQL.CLOSE_CURSOR ()
c INOUT INTEGER);"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.CLOSE_CURSOR (
   c INOUT INTEGER); 

Parameters

パラメーター

説明

c

カーソルの ID。

次の例は、CLOSE_CURSORストアドプロシージャを使用してカーソルを無効にする方法を示しています。

<bx id="1" type="code" text="code id=" zxctlg "title=" "uuid=" lk54x8cazqvk02alde "code=" DECLARE
c番号;
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.CLOSE_CURSOR(c);
END;"data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  c番号;
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.CLOSE_CURSOR(c);
エンド; 

COLUMN_VALUE

このストアドプロシージャは、カーソル内のある位置にある要素の値を返すために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.COLUMN_VALUE ()
cでインテガー、INTEGERのpos、値INOUT ANYELEMENT
[,column_error INOUT NUMBER]
[,actual_length INOUT INOUT INGER]; "id=" esxvcz "searchmatch="[object Object]"title=" "uuid=" lk5511c42muv1pxc39v "data-tag=" codeblock "outputclass=" language-plsql "" ""/>DBMS_SQL.COLUMN_VALUE 
   cでインテガー、 
   INTEGERのpos、 
   値INOUT ANYELEMENT
  [,column_error INOUT NUMBER]
  [,actual_length INOUT INOUT INGER]); 

Parameters

パラメーター

説明

c

フェッチする値のカーソルID。

pos

カーソル内の列の相対位置。

value

列の値。

column_error

(オプション) パラメータは、Oracleとの互換性のために提供されます。

actual_length

(オプション) パラメータは、Oracleとの互換性のために提供されます。

次の例は、カーソル内のある位置にある要素の値を取得する方法を示しています。

<bx id="1" type="code" text="code id=" 9ryvcr "title=" "uuid=" lk559w5qwn0otlu094h "code=" DECLARE
c INTEGER;
processd INTEGER;
strval VARCHAR2(100);
intval INTEGER;
nrows INTEGER DEFAULT 5;
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
DBMS_SQL.NATIVE);
dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
dbms_sql.DEFINE_COLUMN(c, 1, strval);
dbms_sql.DEFINE_COLUMN(c, 2, intval);
processd := DBMS_SQL.EXECUTE(c);
DBMS_SQL.FETCH_ROWS(c) > 0
ループ
DBMS_SQL.COLUMN_VALUE(c, 1, strval);
DBMS_SQL.COLUMN_VALUE(c, 2, intval);
DBMS_OUTPUT.PUT_LINE('c1: '| | strval | |' 、c2: '| | intval);
DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
エンドループ;
DBMS_SQL.CLOSE_CURSOR(c);
エンド;

-- c1: num1, c2: 1
-最後のカウントは: 1
-- c1: num2, c2: 2
-最後のカウントは: 2
-- c1: num3, c2: 3
-最後のカウントは: 3
-- c1: num4, c2: 4
-最後のカウントは: 4
-- c1: num5, c2: 5
-- last count is: 5 "data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  c INTEGER;
  processd INTEGER;
  strval VARCHAR2(100);
  intval INTEGER;
  nrows INTEGER DEFAULT 5;
開始
  c := DBMS_SQL.OPEN_CURSOR();
  DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
                 DBMS_SQL.NATIVE);
  dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
  dbms_sql.DEFINE_COLUMN(c, 1, strval);
  dbms_sql.DEFINE_COLUMN(c, 2, intval);
  processd := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.FETCH_ROWS(c) > 0
  LOOP
    DBMS_SQL.COLUMN_VALUE(c, 1, strval);
    DBMS_SQL.COLUMN_VALUE(c, 2, intval);
    DBMS_OUTPUT.PUT_LINE('c1: '| | strval | |' 、c2: '| | intval);
    DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
  END LOOP;
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

-- c1: num1, c2: 1
-最後のカウントは: 1
-- c1: num2, c2: 2
-最後のカウントは: 2
-- c1: num3, c2: 3
-最後のカウントは: 3
-- c1: num4, c2: 4
-最後のカウントは: 4
-- c1: num5, c2: 5
-最後のカウントは: 5 

COLUMN_VALUE_CHAR

このストアドプロシージャは、カーソル内の位置でCHAR型の列の値を返すために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.COLUMN_VALUE_CHAR (
cでインテガー、INTEGERのpos、値INOUT CHAR
[,column_error INOUT NUMBER]
[,actual_length INOUT INOUT INGER]);"id=" i2zqhg "title=" "uuid=" lk55hjsr1c7gonv2ilx "data-tag=" codeblock "outputclass=" language-plsql "" "/>DBMS_SQL.COLUMN_VALUE_CHAR
   cでインテガー、
   INTEGERのpos、
   値INOUT CHAR
  [,column_error INOUT NUMBER]
  [,actual_length INOUT INOUT INGER]); 

Parameters

パラメーター

説明

c

フェッチする値のカーソルID。

pos

カーソル内の列の相対位置。

value

列の値。

column_error

(オプション) パラメータは、Oracleとの互換性のために提供されます。

actual_length

(オプション) パラメータは、Oracleとの互換性のために提供されます。

次の例は、CHAR型のカーソルデータを取得する方法を示しています。

<bx id="1" type="code" text="code id=" v451sm "title=" "uuid=" lk55l9fn6yn15wjmhgb "code=" CREATE TABLE test(id番号、c CHAR(20));
INSERT INTO test VALUES (1, 'define_column_char ');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
c_var CHAR(30);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT c FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_CHAR(c, 1, c_var, 20);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
DBMS_SQL.COLUMN_VALUE_CHAR(c, 1, c_var);
-- COLUMN cは: define_column_charです
DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | c_var);

DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c CHAR(20));
INSERT INTO test VALUES (1, 'define_column_char ');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  c_var CHAR(30);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT c FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_CHAR(c, 1, c_var, 20);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  DBMS_SQL.COLUMN_VALUE_CHAR(c, 1, c_var);
  -- COLUMN cは: define_column_charです
  DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | c_var);

  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

COLUMN_VALUE_LONG

このストアドプロシージャは、カーソル内の位置でLONG型の列の値を返すために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.COLUMN_VALUE_LONG (
cでインテガー、INTEGERのpos、INTEGERの長さ、INTEGERでオフ、値INOUT VARCHAR2、value_length INOUT INTEGER);"id=" 4lunxg "title=" "uuid=" lk55mxme71ecbabl8v9 "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.COLUMN_VALUE_LONG (
   cでインテガー、 
   INTEGERのpos、 
   INTEGERの長さ、 
   INTEGERでオフ、 
   値INOUT VARCHAR2、
   value_length INOUT INTEGER); 

Parameters

パラメーター

説明

c

フェッチする値のカーソルID。

pos

カーソル内の列の相対位置。

length

フェッチするLONG型の値のバイト数。

off

LONG型の属性のオフセット。

value

VARCHAR2型の列値。

value_length

返される実際のバイト数。

次の例は、カーソルでLONG型のデータをフェッチする方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id NUMBER, doc LONG);
INSERT INTO test VALUES (1, 'This is test for dbms_sql.define_column_long and dbms_sql.column_value_long ');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
doc_var VARCHAR2(10);
pos INTEGER := 0;
str_len INTEGER := 8;
returned_len INTEGER;
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT doc FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_LONG(c, 1);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
ループ
DBMS_SQL.COLUMN_VALUE_LONG(c, 1, str_len, pos, doc_var, returned_len);
returned_len = 0のときに終了します。DBMS_OUTPUT.PUT_LINE('doc is: '| | doc_var);
pos := pos + returned_len;
エンドループ;
エンド;

-- doc is: これは
-- doc is: test for
-- docは: dbms_sq
-- docは: l.de fine
-- doc is: _column_
-- docは: longと
-- docは: dbms_sq
-- doc is: l.column
-- docは: _value_l
-- doc is: ong "id=" zs1ige "title=" "uuid=" lk55y09m4zp1ifgnzet "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id NUMBER、doc LONG);
INSERT INTO test VALUES (1, 'This is test for dbms_sql.define_column_long and dbms_sql.column_value_long ');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  doc_var VARCHAR2(10);
  pos INTEGER := 0;
  str_len INTEGER := 8;
  returned_len INTEGER;
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT doc FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_LONG(c, 1);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  LOOP
      DBMS_SQL.COLUMN_VALUE_LONG(c, 1, str_len, pos, doc_var, returned_len);
      returned_len = 0のときに終了します。
      DBMS_OUTPUT.PUT_LINE('doc is: '| | doc_var);
      pos := pos + returned_len;
  エンドループ;
エンド;

-- doc is: これは
-- doc is: test for
-- docは: dbms_sq
-- docは: l.de fine
-- doc is: _column_
-- docは: longと
-- docは: dbms_sq
-- doc is: l.column
-- docは: _value_l
-- docは: ong 

COLUMN_VALUE_RAW

このストアドプロシージャは、カーソル内の位置でRAW型の列の値を返すために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.COLUMN_VALUE_RAW ()
cでインテガー、INTEGERのpos、値INOUT RAW
[,column_error INOUT NUMBER]
[,actual_length INOUT INOUT INGER]);"id=" gk5gck "title=" "uuuid=" lk561pg9upsyb8zpp2 "data-tag=" codeblock "outputclass=" language-plsql "" "/>DBMS_SQL.COLUMN_VALUE_RAW (
   cでインテガー、
   INTEGERのpos、
   値INOUT RAW
  [,column_error INOUT NUMBER]
  [,actual_length INOUT INOUT INGER]); 

Parameters

パラメーター

説明

c

フェッチする値のカーソルID。

pos

カーソル内の列の相対位置。

value

列の値。

column_error

(オプション) パラメータは、Oracleとの互換性のために提供されます。

actual_length

(オプション) パラメータは、Oracleとの互換性のために提供されます。

次の例は、カーソルでRAWタイプのデータをフェッチする方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
c番号;
番号を無視します。id_var NUMBER;
r_var RAW(10);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT c FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
-- COLUMN cは \x61616161626262636363です
DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"id=" t4t7qo "title=" "uuid=" lk5641ikgfyzrrdui9r "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  r_var RAW(10);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT c FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
  -- COLUMN cは \x61616161626262636363です
  DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

DEFINE_ARRAY

このストアドプロシージャは、カーソルから選択する配列を定義するために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.DEFINE_ARRAY (
cでインテガー、INTEGERのpos、ANYARRAYの値、cntインインテガー,
lower_bnd IN INTEGER);"id=" 2i3nfw "title=" "uuid=" lk56dvj2oqaumuerdv8 "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.DEFINE_ARRAY (
   cでインテガー、 
   INTEGERのpos、 
   ANYARRAYの値、
   cntインインテガー, 
   lower_bnd IN INTEGER); 

Parameters

パラメーター

説明

c

定義する値のカーソルID。

pos

ステートメント内の列の相対位置。

value

バインドするローカル変数。

cnt

フェッチする行の数。

lower_bnd

下限インデックス。

次の例は、カーソルから選択する配列を定義する方法を示しています。

<bx id="1" type="code" text="code code=" DECLARE
curのINTEGER;
processd INTEGER;
インテガー [];
b VARCHAR2[];
c NUMBER[];
開始
cur := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(cur, 'select i, ''num'' | | i, i + 0.003 from generate_series (1,5) g(i)',
DBMS_SQL.NATIVE);
DBMS_SQL.DEFINE_ARRAY(cur, 1, a, 10, 1);
DBMS_SQL.DEFINE_ARRAY(cur, 2, b, 13,1);
DBMS_SQL.DEFINE_ARRAY(cur, 3, c, 6, 1);

processd := DBMS_SQL.EXECUTE(cur);
ループ
processd := DBMS_SQL.FETCH_ROWS(cur);
DBMS_SQL.COLUMN_VALUE(cur, 1, a);
DBMS_SQL.COLUMN_VALUE(cur, 2, b);
DBMS_SQL.COLUMN_VALUE(cur, 3, c);
EXIT WHEN processd! =6;
エンドループ;
RAISE NOTICE 'aは: % '、a;
RAISE NOTICE 'bは: % '、b;
RAISE NOTICE 'cは: % '、c;
DBMS_SQL.CLOSE_CURSOR(cur);
エンド;

-- NOTICE: a = {1,2,3,4,5}
-- NOTICE: b = {Ahoj1,Ahoj2,Ahoj3,Ahoj4,Ahoj5}
-- NOTICE: c = {1.003,2.003,3.003,4.003,5.003}"id=" 4yi7np "title=" "uuid=" lk56jkmf3901tw9pbht "data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  curのINTEGER;
  processd INTEGER;
  インテガー [];
  b VARCHAR2[];
  c NUMBER[];
開始
  cur := DBMS_SQL.OPEN_CURSOR();
  DBMS_SQL.PARSE(cur, 'select i, ''num'' | | i, i + 0.003 from generate_series (1,5) g(i)',
                 DBMS_SQL.NATIVE);
  DBMS_SQL.DEFINE_ARRAY(cur, 1, a, 10, 1);
  DBMS_SQL.DEFINE_ARRAY(cur, 2, b, 13,1);
  DBMS_SQL.DEFINE_ARRAY(cur, 3, c, 6, 1);

  processd := DBMS_SQL.EXECUTE(cur);
  LOOP
    processd := DBMS_SQL.FETCH_ROWS(cur);
    DBMS_SQL.COLUMN_VALUE(cur, 1, a);
    DBMS_SQL.COLUMN_VALUE(cur, 2, b);
    DBMS_SQL.COLUMN_VALUE(cur, 3, c);
    EXIT WHEN processd! =6;
  END LOOP;
  RAISE NOTICE 'aは: % '、a;
  RAISE NOTICE 'bは: % '、b;
  RAISE NOTICE 'cは: % '、c;
  DBMS_SQL.CLOSE_CURSOR(cur);
エンド;

-- NOTICE: a = {1,2,3,4,5}
-- NOTICE: b = {Ahoj1,Ahoj2,Ahoj3,Ahoj4,Ahoj5}
-- NOTICE: c = {1.003,2.003,3.003,4.003,5.003} 

DEFINE_COLUMN

このストアドプロシージャは、カーソルから選択する列を定義するために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.DEFINE_COLUMN (
cでインテガー、INTEGERのpos、ANYELEMENTのcol、column_size IN INTEGER DEFAULT -1);"id=" 2anisu "title=" "uuid=" lk56cx7ufkdz5gxc8cq "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.DEFINE_COLUMN (
   cでインテガー、
   INTEGERのpos、
   ANYELEMENTのcol、
   column_size IN INTEGER DEFAULT -1); 

Parameters

パラメーター

説明

c

定義する値のカーソルID。

pos

ステートメント内の列の相対位置。

col

バインドするローカル変数。

column_size

(オプション) 列値の最大予想バイトサイズ。 デフォルト値: -1。

次の例は、カーソルから選択する列を定義する方法を示しています。

<bx id="1" type="code" text="code id=" 0iztpi "title=" "uuid=" lk56pczspqlsxwnxqdh "code=" DECLARE
c INTEGER;
processd INTEGER;
strval VARCHAR2(100);
intval INTEGER;
nrows INTEGER DEFAULT 5;
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
DBMS_SQL.NATIVE);
dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
dbms_sql.DEFINE_COLUMN(c, 1, strval);
dbms_sql.DEFINE_COLUMN(c, 2, intval);
processd := DBMS_SQL.EXECUTE(c);
DBMS_SQL.FETCH_ROWS(c) > 0
ループ
DBMS_SQL.COLUMN_VALUE(c, 1, strval);
DBMS_SQL.COLUMN_VALUE(c, 2, intval);
DBMS_OUTPUT.PUT_LINE('c1: '| | strval | |' 、c2: '| | intval);
DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
エンドループ;
DBMS_SQL.CLOSE_CURSOR(c);
エンド;

-- c1: num1, c2: 1
-最後のカウントは: 1
-- c1: num2, c2: 2
-最後のカウントは: 2
-- c1: num3, c2: 3
-最後のカウントは: 3
-- c1: num4, c2: 4
-最後のカウントは: 4
-- c1: num5, c2: 5
-- last count is: 5 "data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  c INTEGER;
  processd INTEGER;
  strval VARCHAR2(100);
  intval INTEGER;
  nrows INTEGER DEFAULT 5;
開始
  c := DBMS_SQL.OPEN_CURSOR();
  DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
                 DBMS_SQL.NATIVE);
  dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
  dbms_sql.DEFINE_COLUMN(c, 1, strval);
  dbms_sql.DEFINE_COLUMN(c, 2, intval);
  processd := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.FETCH_ROWS(c) > 0
  LOOP
    DBMS_SQL.COLUMN_VALUE(c, 1, strval);
    DBMS_SQL.COLUMN_VALUE(c, 2, intval);
    DBMS_OUTPUT.PUT_LINE('c1: '| | strval | |' 、c2: '| | intval);
    DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
  END LOOP;
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

-- c1: num1, c2: 1
-最後のカウントは: 1
-- c1: num2, c2: 2
-最後のカウントは: 2
-- c1: num3, c2: 3
-最後のカウントは: 3
-- c1: num4, c2: 4
-最後のカウントは: 4
-- c1: num5, c2: 5
-最後のカウントは: 5 

DEFINE_COLUMN_CHAR

このストアドプロシージャは、カーソルから選択するCHARタイプの列を定義するために使用されます。

構文

<bx id="1" type="code" text="code id=" u60yrf "title=" "uuuid=" lk56rcet2q5jzhjwaav "code=" DBMS_SQL.DEFINE_COLUMN_CHAR (
cでインテガー、INTEGERのpos、チャル、column_size IN INTEGER DEFAULT -1; "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.DEFINE_COLUMN_CHAR (
   cでインテガー、
   INTEGERのpos、
   チャル、
   column_size IN INTEGER DEFAULT -1); 

Parameters

パラメーター

説明

c

定義する値のカーソルID。

pos

ステートメント内の列の相対位置。

col

バインドするローカル変数。

column_size

(オプション) 列値の最大予想バイトサイズ。 デフォルト値: -1。

次の例は、カーソルから選択するCHAR型の列を定義する方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id番号、c CHAR(20));
INSERT INTO test VALUES (1, 'define_column_char ');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
c_var CHAR(30);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT c FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_CHAR(c, 1, c_var, 20);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
DBMS_SQL.COLUMN_VALUE_CHAR(c, 1, c_var);
-- COLUMN cは: define_column_charです
DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | c_var);

DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"id=" 2t5oce "title=" "uuid=" lk56u91c4slpx4jife7 "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c CHAR(20));
INSERT INTO test VALUES (1, 'define_column_char ');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  c_var CHAR(30);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT c FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_CHAR(c, 1, c_var, 20);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  DBMS_SQL.COLUMN_VALUE_CHAR(c, 1, c_var);
  -- COLUMN cは: define_column_charです
  DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | c_var);

  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

DEFINE_COLUMN_LONG

このストアドプロシージャは、カーソルから選択するLONG型の列を定義するために使用されます。

構文

<bx id="1" type="code" text="code id=" cn5dxi "title=" "uuid=" lk56vo92z3enezma9a "code=" DBMS_SQL.DEFINE_COLUMN_LONG (
cでインテガー、pos IN INTEGER); "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.DEFINE_COLUMN_LONG (
   cでインテガー、
   posインインテガー); 

Parameters

パラメーター

説明

c

定義する値のカーソルID。

pos

ステートメント内の列の相対位置。

次の例は、カーソルから選択するLONG型の列を定義する方法を示しています。

<bx id="1" type="code" text="code id=" 6h1ahg "title=" "uuid=" lk56zirkj4jz2fqbh18 "code=" CREATE TABLE test(id NUMBER, doc LONG);
INSERT INTO test VALUES (1, 'This is test for dbms_sql.define_column_long and dbms_sql.column_value_long ');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
doc_var VARCHAR2(10);
pos INTEGER := 0;
str_len INTEGER := 8;
returned_len INTEGER;
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT doc FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_LONG(c, 1);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
ループ
DBMS_SQL.COLUMN_VALUE_LONG(c, 1, str_len, pos, doc_var, returned_len);
returned_len = 0のときに終了します。DBMS_OUTPUT.PUT_LINE('doc is: '| | doc_var);
pos := pos + returned_len;
エンドループ;
エンド;

-- doc is: これは
-- doc is: test for
-- docは: dbms_sq
-- docは: l.de fine
-- doc is: _column_
-- docは: longと
-- docは: dbms_sq
-- doc is: l.column
-- docは: _value_l
-- doc is: ong "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id NUMBER, doc LONG);
INSERT INTO test VALUES (1, 'This is test for dbms_sql.define_column_long and dbms_sql.column_value_long ');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  doc_var VARCHAR2(10);
  pos INTEGER := 0;
  str_len INTEGER := 8;
  returned_len INTEGER;
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT doc FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_LONG(c, 1);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  LOOP
      DBMS_SQL.COLUMN_VALUE_LONG(c, 1, str_len, pos, doc_var, returned_len);
      returned_len = 0のときに終了します。
      DBMS_OUTPUT.PUT_LINE('doc is: '| | doc_var);
      pos := pos + returned_len;
  エンドループ;
エンド;

-- doc is: これは
-- doc is: test for
-- docは: dbms_sq
-- docは: l.de fine
-- doc is: _column_
-- docは: longと
-- docは: dbms_sq
-- doc is: l.column
-- docは: _value_l
-- docは: ong 

DEFINE_COLUMN_RAW

このストアドプロシージャは、カーソルから選択するRAWタイプの列を定義するために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.DEFINE_COLUMN_RAW (
cでインテガー、INTEGERのpos、生のcol、column_size IN INTEGER DEFAULT -1; "id=" az3odc "title=" "uuid=" lk572yz0ckefrgqz6pn "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.DEFINE_COLUMN_RAW (
   cでインテガー、
   INTEGERのpos、
   生のcol、
   column_size IN INTEGER DEFAULT -1); 

Parameters

パラメーター

説明

c

定義する値のカーソルID。

pos

ステートメント内の列の相対位置。

col

バインドするローカル変数。

column_size

(オプション) 列値の最大予想バイトサイズ。 デフォルト値: -1。

次の例は、カーソルから選択するRAWタイプの列を定義する方法を示しています。

<bx id="1" type="code" text="code id=" hgbttq "title=" "uuid=" lk574p9ijv94w59juf "code=" CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
c番号;
番号を無視します。id_var NUMBER;
r_var RAW(10);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT c FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
-- COLUMN cは \x61616161626262636363です
DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  r_var RAW(10);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT c FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
  -- COLUMN cは \x61616161626262636363です
  DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

EXECUTE

この関数は、カーソルを実行するために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.EXECUTE (インレジスタ)
RETURN INTEGER;"id=" a1w0gz "title=" "uuid=" lk57hpfywj302szu4oo "data-tag=" codeblock "outputclass=" language-plsql "" "/>DBMS_SQL.EXECUTE (インINTEGER)
  戻りますインテガー; 

Parameters

パラメーター

説明

c

実行するSQL文のカーソルID。

戻り値

戻り値

説明

BIGINT

SQL文がDELETE、INSERT、またはUPDATE型の場合、このパラメーターは処理されたレコードの数を示します。

次の例は、EXECUTE関数を使用してSQL文を実行する方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id番号、c CHAR(20));

DECLARE
c番号;
ret番号;
id_var NUMBER;
c_var CHAR(20);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'INSERT INTO test VALUES (:id、: n) に戻るc INTO :n' 、DBMS_SQL.NATIVE);
id_var := 3;
c_var := 'bind_variable_char ';
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.BIND_VARIABLE_CHAR(c、'n' 、c_var、18);
ret := DBMS_SQL.EXECUTE(c);
-- 結果は次のとおりです。1
DBMS_OUTPUT.PUT_LINE('RESULT is: '| | ret);
DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テストからORDER BY 1, 2;
id | c
---- + ----------------------
3 | bind_variable_char
(1行) "id=" c1lzoo "title=" "uuid=" lk57jyic01td21vprmu5 "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c CHAR(20));

DECLARE
  c番号;
  ret番号;
  id_var NUMBER;
  c_var CHAR(20);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c,
     'INSERT INTO test VALUES (:id、: n) に戻るc INTO :n' 、
     DBMS_SQL.NATIVE); 
  id_var := 3;
  c_var := 'bind_variable_char ';
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.BIND_VARIABLE_CHAR(c、'n' 、c_var、18);
  ret := DBMS_SQL.EXECUTE(c);
  -- 結果は次のとおりです。1
  DBMS_OUTPUT.PUT_LINE('RESULT is: '| | ret);
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テストからORDER BY 1, 2;
 id | c
---- + ----------------------
  3 | bind_variable_char
(1行) 

EXECUTE_AND_FETCH

この関数は、カーソルを実行し、行データをフェッチするために使用されます。

構文

<bx id="1" type="code" text="code id=" x3a7zn "title=" "uuid=" lk57ov8sben0h1iiwmo "code=" DBMS_SQL.EXECUTE_AND_FETCH (
cでインテガー、正確なBOOLEAN DEFAULT FALSEで)
RETURN INTEGER;"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.EXECUTE_AND_FETCH (
   cでインテガー、
   正確なBOOLEAN DEFAULT FALSEで)
  戻りますインテガー; 

Parameters

パラメーター

説明

c

実行するSQL文のカーソルID。

exact

(オプション) 完全一致が必要かどうかを指定します。 クエリ内の一致する行の数が1に等しくなく、このパラメーターがTRUEに設定されている場合、例外がスローされます。 デフォルト値は FALSE です。

戻り値

戻り値

説明

INTEGER

  • データの行が期待通りにフェッチされた場合、値1が返されます。

  • データがフェッチされない場合、値0が返されます。

次の例は、EXECUTE_AND_FETCH関数を使用してSQL文を実行し、実行結果をフェッチする方法を示しています。

<bx id="1" type="code" text="code id=" 116soz "title=" "uuid=" lk57rn1v41exubabcs9 "code=" CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
c番号;
番号を無視します。id_var NUMBER;
r_var RAW(10);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT c FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
-- COLUMN cは \x61616161626262636363です
DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  r_var RAW(10);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT c FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
  -- COLUMN cは \x61616161626262636363です
  DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

FETCH_ROWS

この関数は、カーソルから行データをフェッチするために使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.FETCH_ROWS (インレジスタ)
RETURN INTEGER;"id=" 3z8zeb "title=" "uuid=" lk57so40mbsp2sezlg9 "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.FETCH_ROWS (インインタージェ)
  戻りますインテガー; 

Parameters

パラメーター

説明

c

フェッチするデータのカーソルID。

戻り値

戻り値

説明

INTEGER

データが正常にフェッチされた場合、値1が返されます。 データがフェッチされない場合、値0が返されます。

EXECUTE関数で指定したSQL文の実行結果を取得する例を次に示します。

<bx id="1" type="code" text="code id=" alnqcu "title=" "uuid=" lk57tsa5w143zc81q2b "code=" DECLARE
c INTEGER;
processd INTEGER;
strval VARCHAR2(100);
intval INTEGER;
nrows INTEGER DEFAULT 5;
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
DBMS_SQL.NATIVE);
dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
dbms_sql.DEFINE_COLUMN(c, 1, strval);
dbms_sql.DEFINE_COLUMN(c, 2, intval);
processd := DBMS_SQL.EXECUTE(c);
DBMS_SQL.FETCH_ROWS(c) > 0
ループ
DBMS_SQL.COLUMN_VALUE(c, 1, strval);
DBMS_SQL.COLUMN_VALUE(c, 2, intval);
DBMS_OUTPUT.PUT_LINE('c1: '| | strval | |' 、c2: '| | intval);
DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
エンドループ;
DBMS_SQL.CLOSE_CURSOR(c);
エンド;

-- c1: num1, c2: 1
-最後のカウントは: 1
-- c1: num2, c2: 2
-最後のカウントは: 2
-- c1: num3, c2: 3
-最後のカウントは: 3
-- c1: num4, c2: 4
-最後のカウントは: 4
-- c1: num5, c2: 5
-- last count is: 5 "data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  c INTEGER;
  processd INTEGER;
  strval VARCHAR2(100);
  intval INTEGER;
  nrows INTEGER DEFAULT 5;
開始
  c := DBMS_SQL.OPEN_CURSOR();
  DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
                 DBMS_SQL.NATIVE);
  dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
  dbms_sql.DEFINE_COLUMN(c, 1, strval);
  dbms_sql.DEFINE_COLUMN(c, 2, intval);
  processd := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.FETCH_ROWS(c) > 0
  LOOP
    DBMS_SQL.COLUMN_VALUE(c, 1, strval);
    DBMS_SQL.COLUMN_VALUE(c, 2, intval);
    DBMS_OUTPUT.PUT_LINE('c1: '| | strval | |' 、c2: '| | intval);
    DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
  END LOOP;
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

-- c1: num1, c2: 1
-最後のカウントは: 1
-- c1: num2, c2: 2
-最後のカウントは: 2
-- c1: num3, c2: 3
-最後のカウントは: 3
-- c1: num4, c2: 4
-最後のカウントは: 4
-- c1: num5, c2: 5
-最後のカウントは: 5 

IS_OPEN

この関数は、カーソルが開いているかどうかを判断するために使用されます。

構文

<bx id="1" type="code" text="code id=" o0i4be "title=" "uuuid=" lk57wjfkeja0y2z9xx9 "code=" DBMS_SQL.IS_OPEN (インジェット)
RETURN BOOLEAN;"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.IS_OPEN (c IN INTEGER)
  戻るブーリアン; 

Parameters

パラメーター

説明

c

カーソルの ID。

戻り値

戻り値

説明

BOOLEAN

カーソルが開いている場合、値TRUEが返されます。 そうでなければ、値FALSEが返される。

次の例は、カーソルが開いているかどうかを判断する方法を示しています。

<bx id="1" type="code" text="code code=" DECLARE
c INTEGER;
開始
c := DBMS_SQL.OPEN_CURSOR();
-- CURSORは開いていますか? 真
DBMS_OUTPUT.PUT_LINE('CURSOR is open? '| | DBMS_SQL.IS_OPEN(c));

DBMS_SQL.CLOSE_CURSOR(c);
-- CURSORは開いていますか? false
DBMS_OUTPUT.PUT_LINE('CURSOR is open? '| | DBMS_SQL.IS_OPEN(c));
エンド;
"id=" y6a2lu "title=" "uuid=" lk57y7nh9b3iewx6q3n "data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  c INTEGER;
開始
  c := DBMS_SQL.OPEN_CURSOR();
  -- CURSORは開いていますか? true
  DBMS_OUTPUT.PUT_LINE('CURSORはオープンですか? '| | DBMS_SQL.IS_OPEN(c);

  DBMS_SQL.CLOSE_CURSOR(c);
  -- CURSORは開いていますか? false
  DBMS_OUTPUT.PUT_LINE('CURSORはオープンですか? '| | DBMS_SQL.IS_OPEN(c);
エンド;

LAST_ROW_COUNT

この関数は、フェッチされた行の累積数をカウントするために使用されます。

構文

<bx id="1" type="code" text="code id=" ifgunz "title=" "uuuid=" lk589e6iz1kuzjwegoi "code=" DBMS_SQL.LAST_ROW_COUNT
RETURN INTEGER;"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.LAST_ROW_COUNT 
   戻りますインテガー; 

戻り値

戻り値

説明

INTEGER

フェッチされた行の数。

FETCH_ROWS関数を使用してSELECT文の実行結果を取得し、LAST_ROW_COUNT関数を使用して行数をカウントする例を次に示します。

<bx id="1" type="code" text="code code=" DECLARE
c INTEGER;
processd INTEGER;
strval VARCHAR2(100);
intval INTEGER;
nrows INTEGER DEFAULT 5;
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
DBMS_SQL.NATIVE);
dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
dbms_sql.DEFINE_COLUMN(c, 1, strval);
dbms_sql.DEFINE_COLUMN(c, 2, intval);
processd := DBMS_SQL.EXECUTE(c);
DBMS_SQL.FETCH_ROWS(c) > 0
ループ
DBMS_SQL.COLUMN_VALUE(c, 1, strval);
DBMS_SQL.COLUMN_VALUE(c, 2, intval);
エンドループ;
-最後のカウントは: 5
DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"id=" 0b0ooz "searchmatch="[object Object]"title=" "uuuid=" lk58a0xfu1jitehsu8 "data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  c INTEGER;
  processd INTEGER;
  strval VARCHAR2(100);
  intval INTEGER;
  nrows INTEGER DEFAULT 5;
開始
  c := DBMS_SQL.OPEN_CURSOR();
  DBMS_SQL.PARSE(c, 'select ''num'' | | i, i from generate_series(1, :nrows) g(i)',
                 DBMS_SQL.NATIVE);
  dbms_sql.BIND_VARIABLE(c、'nrow' 、nrows);
  dbms_sql.DEFINE_COLUMN(c, 1, strval);
  dbms_sql.DEFINE_COLUMN(c, 2, intval);
  processd := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.FETCH_ROWS(c) > 0
  LOOP
    DBMS_SQL.COLUMN_VALUE(c, 1, strval);
    DBMS_SQL.COLUMN_VALUE(c, 2, intval);
  END LOOP;
  -最後のカウントは: 5
  DBMS_OUTPUT.PUT_LINE('last count is: '| | DBMS_SQL.LAST_ROW_COUNT());
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

OPEN_CURSOR

この関数は、新しく開いたカーソルのIDを返すために使用されます。

構文

<bx id="1" type="code" text="code id=" hygeaz "title=" "uuuid=" lk58bo0ymnfb74qouet "code=" DBMS_SQL.OPEN_CURSOR ()
[INTEGERのsecurity_level]
[,treat_as_client_for_results IN BOOLEAN DEFAULT FALSE])
RETURN INTEGER;"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.OPEN_CURSOR ()
   [INTEGERのsecurity_level]
   [,treat_as_client_for_results IN BOOLEAN DEFAULT FALSE]) 
  戻りますインテガー; 

Parameters

パラメーター

説明

security_level

(オプション) パラメータは、Oracleとの互換性のために提供されます。

treat_as_client_for_results

(オプション) パラメータは、Oracleとの互換性のために提供されます。

戻り値

戻り値

説明

INTEGER

作成されるカーソルのID。

次の例は、新しいカーソルを開く方法を示しています。

<bx id="1" type="code" text="code id=" swbbwt "title=" "uuid=" lk58cwc469jtjwzox3 "code=" DECLARE
c INTEGER;
開始
c := DBMS_SQL.OPEN_CURSOR();
-- CURSOR idは: 1です
DBMS_OUTPUT.PUT_LINE('CURSOR id is: '| | c);
エンド;
"data-tag=" codeblock "outputclass=" language-plsql ""/>DECLARE
  c INTEGER;
開始
  c := DBMS_SQL.OPEN_CURSOR();
  -- CURSOR idは: 1です
  DBMS_OUTPUT.PUT_LINE('CURSOR id is: '| | c);
エンド;

PARSE

このストアドプロシージャは、ステートメントの解析に使用されます。

構文

<bx id="1" type="code" text="code code=" DBMS_SQL.PARSE (
cでインテガー、ステートメントIN VARCHAR2,
INTEGERのlanguage_flag、エディションVARCHAR2デフォルトNULL、apply_crossedition_trigger IN VARCHAR2 DEFAULT NULL、fire_apply_trigger IN BOOLEAN DEFAULT TRUE、VARCHAR2 DEFAULT NULLのスキーマ、VARCHAR2のコンテナ;

DBMS_SQL.PARSE (
cでインテガー、ステートメントIN VARCHAR2a,
インテンパーでのポンド、インテガーのub、BOOLEANのlfflg,
INTEGERのlanguage_flag、エディションVARCHAR2デフォルトNULL、apply_crossedition_trigger IN VARCHAR2 DEFAULT NULL、fire_apply_trigger IN BOOLEAN DEFAULT TRUE、VARCHAR2 DEFAULT NULLのスキーマ、VARCHAR2のコンテナ;

DBMS_SQL.PARSE (
cでインテガー、ステートメントIN VARCHAR2s,
インテンパーでのポンド、インテガーのub、BOOLEANのlfflg,
INTEGERのlanguage_flag、エディションVARCHAR2デフォルトNULL、apply_crossedition_trigger IN VARCHAR2 DEFAULT NULL、fire_apply_trigger IN BOOLEAN DEFAULT TRUE、VARCHAR2 DEFAULT NULLのスキーマ、"id=" 7472an "searchmatch="[object Object]"title=" "uuid=" lk58glod9p840yl93m "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.PARSE (
   cでインテガー、
   ステートメントIN VARCHAR2,
   INTEGERのlanguage_flag、
   エディションVARCHAR2デフォルトNULL、
   apply_crossedition_trigger IN VARCHAR2 DEFAULT NULL、
   fire_apply_trigger IN BOOLEAN DEFAULT TRUE、
   VARCHAR2 DEFAULT NULLのスキーマ、
   VARCHAR2のコンテナ;

DBMS_SQL.PARSE (
   cでインテガー、 
   ステートメントIN VARCHAR2a,
   インテンパーでのポンド、 
   インテガーのub、
   BOOLEANのlfflg, 
   INTEGERのlanguage_flag、
   エディションVARCHAR2デフォルトNULL、
   apply_crossedition_trigger IN VARCHAR2 DEFAULT NULL、
   fire_apply_trigger IN BOOLEAN DEFAULT TRUE、
   VARCHAR2 DEFAULT NULLのスキーマ、
   VARCHAR2のコンテナ;

DBMS_SQL.PARSE (
   cでインテガー、 
   ステートメントIN VARCHAR2s,
   インテンパーでのポンド、 
   インテガーのub、
   BOOLEANのlfflg, 
   INTEGERのlanguage_flag、
   エディションVARCHAR2デフォルトNULL、
   apply_crossedition_trigger IN VARCHAR2 DEFAULT NULL、
   fire_apply_trigger IN BOOLEAN DEFAULT TRUE、
   VARCHAR2 DEFAULT NULLのスキーマ、
   VARCHAR2のコンテナ); 

Parameters

パラメーター

説明

c

解析するSQL文のカーソルID。

解析するSQLステートメント。

language_flag

SQL文の動作。 有効な値:

  • DBMS_SQL.V6

  • DBMS_SQL.NATIVE

  • DBMS_SQL.V7

lb

ステートメント内の要素の下限。The lower boundary of the element in the statement.

ub

ステートメント内の要素の上限。The upper boundary of the element in the statement.

lfflg

このパラメーターがTRUEに設定されている場合、連結中に各要素の後に改行文字が挿入されます。

エディション

(オプション) パラメータは、Oracleとの互換性のために提供されます。

apply_crossediappy_crossedition_trigger

(オプション) パラメータは、Oracleとの互換性のために提供されます。

fire_apply_trigger

(オプション) パラメータは、Oracleとの互換性のために提供されます。

schema

(オプション) パラメータは、Oracleとの互換性のために提供されます。

コンテナ

(オプション) パラメータは、Oracleとの互換性のために提供されます。

次の例は、SQL文の配列を解析する方法を示しています。

<bx id="1" type="code" text="code id=" ppcdav "title=" "uuid=" lk58sagr7csf8a1uvvp "code=" CREATE TABLE test(a int、b varchar2、c数値);

DECLARE
c int;
int[];
b varchar[];
ca numeric[];
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c、'insert into test values(:a、: b、: c)'、DBMS_SQL.NATIVE);
a :=アレイ [1, 2, 3];
b := ARRAY['Alice' 、'Bob' 、'Cindy'];
ca :=アレイ [5, 4, 3];

DBMS_SQL.BIND_ARRAY(c、'a' 、a);
DBMS_SQL.BIND_ARRAY(c、'b' 、b);
DBMS_SQL.BIND_ARRAY(c、'c' 、ca);
-- 挿入された行: 3
DBMS_OUTPUT.PUT_LINE('inserted rows: '| | DBMS_SQL.EXECUTE(c));
DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テスト注文から1、2、3;
a | b | c
--- ------- -----
1 | アリス | 5
2 | ボブ | 4
3 | シンディ | 3
(3行) "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(a int, b varchar2, c numeric);

DECLARE
  c int;
  int[];
  b varchar[];
  ca numeric[];
開始
  c := DBMS_SQL.OPEN_CURSOR();
  DBMS_SQL.PARSE(c、'insert into test values(:a、: b、: c)'、DBMS_SQL.NATIVE);
  a :=アレイ [1, 2, 3];
  b := ARRAY['Alice' 、'Bob' 、'Cindy'];
  ca :=アレイ [5, 4, 3];

  DBMS_SQL.BIND_ARRAY(c、'a' 、a);
  DBMS_SQL.BIND_ARRAY(c、'b' 、b);
  DBMS_SQL.BIND_ARRAY(c、'c' 、ca);
-- 挿入された行: 3
  DBMS_OUTPUT.PUT_LINE('inserted rows: '| | DBMS_SQL.EXECUTE(c));
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

SELECT * テスト注文から1、2、3;
 a | b | c
--- ------- -----
 1 | アリス | 5
 2 | ボブ | 4
 3 | シンディ | 3
(3行) 

VARIABLE_VALUE

このストアドプロシージャは、カーソル内の名前付き変数の値を返すために使用されます。

構文

<bx id="1" type="code" text="code id=" tc5cbx "title=" "uuid=" lk58zfmr91ptuumnw97 "code=" DBMS_SQL.VARIABLE_VALUE ()
cでインテガー、VARCHAR2の名前、値INOUT ANYELEMENT); "data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.VARIABLE_VALUE ( 
   cでインテガー、 
   VARCHAR2の名前、
   値INOUT ANYELEMENT); 

Parameters

パラメーター

説明

c

フェッチする値のカーソルID。

name

値を取得する変数の名前。

value

フェッチされた値。

次の例は、カーソル内の名前付き変数の値をフェッチする方法を示しています。

<bx id="1" type="code" text="code id=" ubkmuz "title=" "uuuid=" lk59dhx9yiv12yl1x5c "code=" CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for varchar2');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
c_var VARCHAR2(25);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、DBMS_SQL.NATIVE);

id_var := 1;
c_var := 'bind_variable_varchar2 ';

DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.BIND_VARIABLE(c、'n' 、c_var、25);

ignore := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);

-- 返されるVARCHARは、bind_variable_varchar2です。DBMS_OUTPUT.PUT_LINE('VARCHARが返されます: '| | c_var);
DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for varchar2');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  c_var VARCHAR2(25);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、
      DBMS_SQL.NATIVE); 
  
  id_var := 1;
  c_var := 'bind_variable_varchar2 ';
  
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.BIND_VARIABLE(c、'n' 、c_var、25);
  
  ignore := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);
  
  -- 返されるVARCHARは、bind_variable_varchar2です。
  DBMS_OUTPUT.PUT_LINE('VARCHARが返されます: '| | c_var);
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

VARIABLE_VALUE_CHAR

このストアドプロシージャは、カーソル内のCHAR型の名前付き変数の値を返すために使用されます。

構文

<bx id="1" type="code" text="code id=" ntt8rk "title=" "uuid=" lk59feirazfw4t0i9ab "code=" DBMS_SQL.VARIABLE_VALUE_CHAR (
cでインテガー、VARCHAR2の名前、値INOUT CHAR);"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.VARIABLE_VALUE_CHAR (
   cでインテガー、
   VARCHAR2の名前、
   値INOUT CHAR); 

Parameters

パラメーター

説明

c

フェッチする値のカーソルID。

name

値を取得する変数の名前。

value

フェッチされた値。

次の例は、カーソルでCHAR型の名前付き変数の値をフェッチする方法を示しています。

<bx id="1" type="code" text="code code=" CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for char');

DECLARE
c番号;
番号を無視します。id_var NUMBER;
c_var CHAR(25);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、DBMS_SQL.NATIVE);

id_var := 1;
c_var := 'bind_variable_char ';

DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.BIND_VARIABLE_CHAR(c、'n' 、c_var、25);

ignore := DBMS_SQL.EXECUTE(c);
DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);

-- CHAR返されます: bind_variable_char
DBMS_OUTPUT.PUT_LINE('CHAR returned is:'| | c_var);
DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"id=" 1ud3pw "title=" "uuid=" lk5bxsaic06xnuo3wdo "data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c VARCHAR2(30));
INSERT INTO test VALUES (1, 'bind_variable for char');

DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  c_var CHAR(25);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'UPDATEテストSET c = :n WHERE id = :id Returningcへ: n' 、
      DBMS_SQL.NATIVE); 
  
  id_var := 1;
  c_var := 'bind_variable_char ';
  
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.BIND_VARIABLE_CHAR(c、'n' 、c_var、25);
  
  ignore := DBMS_SQL.EXECUTE(c);
  DBMS_SQL.VARIABLE_VALUE(c, 'n', c_var);
  
  -- CHAR返されます: bind_variable_char
  DBMS_OUTPUT.PUT_LINE('CHAR returned is:'| | c_var);
  DBMS_SQL.CLOSE_CURSOR(c);
エンド;

VARIABLE_VALUE_RAW

このストアドプロシージャは、カーソルでRAW型の名前付き変数の値を返すために使用されます。

構文

<bx id="1" type="code" text="code id=" oz8yqg "title=" "uuid=" lk5c3lgo0fysc1po8on "code=" DBMS_SQL.VARIABLE_VALUE_RAW (
cでインテガー、VARCHAR2の名前、値INOUT RAW);"data-tag=" codeblock "outputclass=" language-plsql ""/>DBMS_SQL.VARIABLE_VALUE_RAW (
   cでインテガー、
   VARCHAR2の名前、
   値INOUT RAW); 

Parameters

パラメーター

説明

c

フェッチする値のカーソルID。

name

値を取得する変数の名前。

value

フェッチされた値。

次の例は、カーソルでRAW型の名前付き変数の値をフェッチする方法を示しています。

<bx id="1" type="code" text="code id=" 4ix1hl "title=" "uuid=" lk5c5aelc9gjkplgaw "code=" CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
c番号;
番号を無視します。id_var NUMBER;
r_var RAW(10);
開始
c := DBMS_SQL.OPEN_CURSOR();
DBMS_SQL.PARSE(c,
'SELECT c FROM test WHERE id = :id '、DBMS_SQL.NATIVE);
id_var := 1;
DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
-- COLUMN cは \x61616161626262636363です
DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

DBMS_SQL.CLOSE_CURSOR(c);
エンド;
"data-tag=" codeblock "outputclass=" language-plsql ""/>CREATE TABLE test(id番号、c RAW(20));
テスト値 (1、'aaabbbccc') に挿入します。DECLARE
  c番号;
  番号を無視します。
  id_var NUMBER;
  r_var RAW(10);
開始 
  c := DBMS_SQL.OPEN_CURSOR(); 
  DBMS_SQL.PARSE(c, 
      'SELECT c FROM test WHERE id = :id '、
      DBMS_SQL.NATIVE); 
  id_var := 1;
  DBMS_SQL.BIND_VARIABLE(c、'id' 、id_var);
  DBMS_SQL.DEFINE_COLUMN_RAW(c, 1, r_var, 10);
  無視:= DBMS_SQL.EXECUTE_AND_FETCH(c);
  DBMS_SQL.COLUMN_VALUE_RAW(c, 1, r_var);
  -- COLUMN cは \x61616161626262636363です
  DBMS_OUTPUT.PUT_LINE('COLUMN cは: '| | r_var);

  DBMS_SQL.CLOSE_CURSOR(c);
エンド;