Top > SQL*Plus > VARIABLE

バインド変数を宣言する


VARIABLE  PL/SQL  SQL*Plus 

 VAR

  
使 NULL 
 SQL*Plus  PRINT  使

VARIABLE  


VARIABLE 
VARIABLE [変数名 [データ型]]



VAR [変数名 [データ型]]


使

NUMBER

CHAR [ (n [ CHAR | BYTE ]) ]

NCHAR [(n)]

VARCHAR2 (n [ CHAR | BYTE ])

NVARCHAR2 (n)

CLOB

NCLOB

BINARY_FLOAT Oracle 10g

BINARY_DOUBLE Oracle 10g

REFCURSOR

CHARNCHAR  '1' 
SQL*Plus 使 PL/SQL   

 


(:) (1) PL/SQL 
SQL> set null '<null>'
SQL> set head off
SQL> variable var_at_sqlplus number
SQL> print :var_at_sqlplus
 
<null>
 
SQL> begin
  2     :var_at_sqlplus := 1;
  3  end;
  4  /
 
PL/SQLプロシージャが正常に完了しました。
 
SQL> print :var_at_sqlplus
 
             1
SQL> execute :var_at_sqlplus := 2
SQL> -- BEGIN :var_at_sqlplus := 2; END; に変換される。
 
PL/SQLプロシージャが正常に完了しました。
 
SQL> print :var_at_sqlplus
 
            2

(1)  Oracle 12cr2


Oracle 12c R2  variable 

Oracle 12c R2 
SQL> variable var_at_sqlplus number=1
SQL> print :var_at_sqlplus           
 
VAR_AT_SQLPLUS
--------------
	     1

もしくは定義と代入を分ける表記でも可能

SQL> variable var_at_sqlplus number
SQL> variable var_at_sqlplus=1     
SQL> print :var_at_sqlplus 
 
VAR_AT_SQLPLUS
--------------
	     1

Oracle 12c R1 以前だと…

その1

SQL> variable var_at_sqlplus number=1
Usage: VAR[IABLE] [ <variable> [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
		    VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
		    NVARCHAR2 (n) | CLOB | NCLOB | BLOB | BFILE
		    REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE ] ]

その2

SQL> variable var_at_sqlplus number
SQL> variable var_at_sqlplus=1     
SP2-0553: Illegal variable name "var_at_sqlplus=1"

バインド変数と PL/SQL 変数

SQL> set serveroutput on
SQL> -- SQL*Plus のバインド変数
SQL> variable var_at_sqlplus number
SQL> declare
  2     var_at_dbserver number;    -- PL/SQL だけの変数
  3  begin
  4     :var_at_sqlplus := 0;
  5     var_at_dbserver := 0;
  6     for i in 1..10
  7     loop
  8             :var_at_sqlplus := :var_at_sqlplus + 1;
  9             var_at_dbserver := var_at_dbserver + 10;
 10     end loop;
 11     dbms_output.put_line('PLSQL block (var): ' || :var_at_sqlplus);
 12     dbms_output.put_line('PLSQL block (db) : ' ||  var_at_dbserver);
 13  end;
 14  /
PLSQL block (var): 10
PLSQL block (db) : 100
 
PL/SQLプロシージャが正常に完了しました。
 
SQL> -- 変数のプリント
SQL> print :var_at_sqlplus
 
            10
 
SQL> print var_at_dbserver
SP2-0552: バインド変数"VAR_AT_DBSERVER"が宣言されていません。
SQL>

 SQL*Plus 使 SQL*Plus  Oracle Net 
 


ホスト変数

バインド変数にユーザー定義変数を代入する方法

動的SQLとバインド変数

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター