2016-09-30 8 views
2

私は最近、SQL ServerをOracleに変更しました。オラクル固有の機能が混乱しています。 https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/returninginto_clause.htmの文書は、私には分かりませんでした。Returningとは何か... INTO .... Oracle SQLでは何ですか?

私はのような何かを行う場合は、次の

INSERT INTO my_table (val2, val3, val4) 
VALUES (2, 3, 4) 
RETURNING val1 INTO 1 

をテーブルのスキーマは次のとおりです。

CREATE TABLE my_table (
    val1 NUMBER NOT NULL, 
    val2 NUMBER, 
    val3 NUMBER, 
    val4 NUMBER, 
    CONSTRAINT pk_val1 PRIMARY KEY (val1) 
) 

それが何をするのでしょうか?それは何を返すのですか?

+0

SQL Serverに 'Insert Into'を実行することができます... – ps2goat

+0

だから私の質問は 'Insert Into'それは「リターンイントゥー」のことでした。 – Sonofblip

答えて

-1

Oracle returning節は、出力変数に指定された列の値を返します。あなたのクエリから、あなたは主キーを入力するためにOracle自動インクリメントを使用しているようです。そう1

INTO

MY_TABLE(VAL2、val3は、val4) VALUES(2、3、4) RETURNING VAL1 INTO INSERTにこのインデックス2,3で指定された変数の値とMY_TABLEの行を挿入します、4を列val2、val3、val4に変換し、インデックス1で指定された変数に生成した主キーを返します。

+0

ありがとうございました!私はオラクルのドキュメンテーションがはっきりしていたらいいと思う – Sonofblip

+1

"インデックス2,3,4で指定された変数の値は、バインド変数があることを意味します。 "2"を ":2"、 "3"を ":3"などにする必要があります。しかし、書かれているように、それらは変数を束縛しない定数です。 –

-1

投稿したSQL文は意味をなさないものです。列を定数に戻すことはできません。あなたはそれをある種のローカル変数に返します。

たとえば、テーブルには、トリガーを使用してval1列の値を設定するトリガーがあります。これにより、主キーの値を指定しなくても、insertステートメントを成功させることができます。あなたは、このようなトリガーを持っていて、

INSERT INTO my_table (val2, val3, val4) 
    VALUES (2, 3, 4) 
    RETURNING val1 INTO l_local_variable 

ような何かを行うと仮定するとmy_tableに行を挿入し、トリガーは、ローカル変数l_local_variableval1列に格納されている値を返します。

関連する問題