2009-08-31 7 views
1

簡単な手順を記述します。打ち上げのOracleの値を比較する際のエラー

DECLARE 
    connection_id LINE.CONNECTION_ID%TYPE := 11009; 
    tmp_integer INTEGER; 
BEGIN 
    SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = 11009; 
    DBMS_OUTPUT.PUT_LINE(connection_id); 
    DBMS_OUTPUT.PUT_LINE(tmp_integer); 
END; 

結果:

11009 
3 

それは良い結果です。

11009 
30997 

間違いがある:

DECLARE 
    connection_id LINE.CONNECTION_ID%TYPE := 11009; 
    tmp_integer INTEGER; 
BEGIN 
    SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = connection_id; 
    DBMS_OUTPUT.PUT_LINE(connection_id); 
    DBMS_OUTPUT.PUT_LINE(tmp_integer); 
END; 

が、この場合には

は、私は奇妙な結果を得る:私はCONNECTION_IDが11009. 修正した後でのみ、3行がありますか?

答えて

3

PL/SQL変数の名前を表の列名と異なるように変更してください。 v_connection_id。

+0

はい、間違いです。ありがとう! –

+0

ようこそ - もう1つの注意点 - PL/SQL変数と列名の間の衝突の可能性を減らすコーディング・スタイルを採用するのが良い一般的な方法です。 v_COLUMN_NAMEまたはvCOLUMN_NAME - あなたのコードでは見つけやすくなりましたが、長いカーソル定義と多くの変数を持つパッケージは、多くの時間を浪費するデバッグにつながります。 – dpbradley