0

データ列情報を 2 つのバインド変数に割り当てるこのスクリプトを読みました。

このようなもの:

EXEC SQL SELECT 
var1
into :v.v1:v2
from table

そこにコンマがあってはいけませんか?それとも、同じ値を使用してに代入var1するようなものですか?v.v1v2

4

2 に答える 2

0

上記のスクリプトはエラーのみを返します。値を割り当てる場合は、カンマが必要です。

構文は次のようになります:- EMPLOYEES から Empno、Ename、Deptno、salary をフェッチする場合の例。plsql ブロッ​​クは以下のようになります。

DECLARE

 L_EMPNO NUMBER;

 L_ENAME VARCHAR2(1000);

 L_DEPTNO NUMBER;

 L_SALARY NUMBER;

BEGIN

 SELECT EMPNO, ENAME, DEPTNO, SALARY

 INTO  L_EMPNO, L_ENAME, L_DEPTNO, L_SALARY

 FROM EMPLOYEES 

 WHERE EMPNO=100;

END;
于 2015-05-08T05:28:42.767 に答える
0

このコードは、SQL が埋め込まれた C プログラムである PRO*C プログラムの一部です。

v2 は指標変数です。情報については、こちらを参照してください: https://docs.oracle.com/cd/B28359_01/appdev.111/b28427/pc_04dat.htm#i12463

インジケータ変数には、関連付けられた変数に関連する値が含まれます。この場合は v.v1 であり、使用される操作の後に設定されます。この場合、選択後に v2 をテストでき、その値に基づいて v.v1 に関する情報が表示されます。

上記のリンクから、v2 が等しい場合:

 0  - The operation was successful
-1  - A NULL was returned, inserted, or updated.
-2  - Output to a character host variable from a "long" type was truncated, but the original column length cannot be determined.
>0  - The result of a SELECT or FETCH into a character host variable was truncated. In this case, if the host variable is a multibyte character variable, the indicator value is the original column length in characters. If the host variable is not a multibye character variable, then the indicator length is the original column length in bytes.

別の形式を使用することをお勧めします。これにより、後でこれを維持する人にとって物事が明確になります(少なくとも、その人に好意を示し、頭を悩ませたときにこれにコメントしてください)。あなたの後に保守する人のために常にコードを書いてください。そんなことをする前に、あなたはその人を望んでいませんか?!:

EXEC SQL SELECT 
var1
into :v.v1 INDICATOR :v2
from table
于 2015-05-14T17:29:51.383 に答える