sql >> データベース >  >> RDS >> Oracle

PL / SQL変数名と同じSQL列名-これはselect文でどのように行うことができますか?

    「変数名を変更する必要なしに」の定義を十分に自由に理解できれば可能です。 。すばらしいPL/SQLの名前解決を読むと次のようになります。

    名前付きPL/SQLユニットで識別子が宣言されている場合は、次の構文を使用して、その単純な名前(宣言内の名前)をユニットの名前(ブロック、サブプログラム、またはパッケージ)で修飾できます。

    unit_name.simple_identifier_name

    次の例では、20を出力します 予想通り:

    create table foo (a number, b number);
    
    insert into foo values(1, 10);
    insert into foo values(2, 20);
    insert into foo values(3, 30);
    
    begin
      <<bar>>
      declare
        a number;
        b number;
      begin
        a := 2;
        select b into bar.b from foo where a = bar.a;
        dbms_output.put_line(b);
      end;
    end;
    /
    

    変数名は変更されません。代わりに、彼らはうーん...もっと資格があります:)

    以下は機能しないことに注意してください:

    begin
      declare
        a number;
        b number;
      begin
        a := 2;
        select foo.b into b from foo where foo.a = a;
        dbms_output.put_line(b);
      end;
    end;
    /
    

    修飾されていないaとして selectで -優先順位の規則により、ステートメントは列として解釈されます:

    SQLステートメントが、列とローカル変数または仮パラメーターの両方に属する名前を参照している場合は、列名が優先されます。



    1. java.lang.IllegalStateException:CursorWindowから行0、列-1を読み取れませんでした-Androidsqliteの問題

    2. 簡単な方法特定のテーブルの主キーとして適切な列を選択する

    3. 一致するものがない場合は、最初のレコードを選択します

    4. PostgreSQLでビューのCREATEVIEWコードを表示するにはどうすればよいですか?