MySQL では、単一の @ を使用してセッション変数へのアクセスを作成できます。初期化の例:
set @myVar = true;
このコードを含むいくつかのトリガー:
if (@myVar is not true) then
execute something
Oracle 10g で同等のものは何ですか?
MySQL では、単一の @ を使用してセッション変数へのアクセスを作成できます。初期化の例:
set @myVar = true;
このコードを含むいくつかのトリガー:
if (@myVar is not true) then
execute something
Oracle 10g で同等のものは何ですか?
SQL> EXEC DBMS_SESSION.SET_CONTEXT('CLIENTCONTEXT', 'myvar', 'myvalue');
PL/SQL procedure successfully completed
SQL> SELECT SYS_CONTEXT('CLIENTCONTEXT', 'myvar') FROM dual;
SYS_CONTEXT('CLIENTCONTEXT','M
--------------------------------------------------------------------------------
myvalue
パッケージのグローバル変数は、おそらく同じトリックを行います。
CREATE OR REPLACE PACKAGE foo as
myVar BOOLEAN;
END foo;
CREATE OR REPLACE PACKAGE BODY foo AS
BEGIN
MyVar := true;
END foo;
BEGIN
If foo.myVar THEN
dbms_output.put_line ('MyVar is True');
end if;
END;
SYS_CONTEXT よりもパッケージを使用する利点は、カプセル化が得られることです。
バインド変数を使用しないのはなぜですか? SQL プラスの場合:
variable SOME_NUMBER number
exec :SOME_NUMBER := 10
PL/SQL プロシージャが正常に完了しました
if :SOME_NUMBER = 10 then
do something;
end if;
/
あらゆる種類の Oracle データ型で機能します。