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

PL/pgSQL匿名ブロック内の参照psqlパラメータ

    psql パーサーは文字列の中に何があるかを見ることができません。これはあなたが望むものかもしれません:

    delete from t
    where :para = 1
    

    匿名ブロックの外でそれを行います。本当にPL/pgSQLが必要な場合 パラメータ化された関数を使用する:

    create or replace function f(_para integer)
    returns void as $$
    begin
        if _para = 1 then
            --statements
        end if;
    end; $$ language plpgsql;
    

    また、スクリプトファイルには次のものが含まれます。

    select f(:para);
    

    データベースに関数を永続的に追加したくない場合は、スクリプト内ですべて実行してください。

    drop function if exists f_iu7YttW(integer);
    
    create or replace function f_iu7YttW(_para integer)
    returns void as $$
    begin
        if _para = 1 then
            --statements
        end if;
    end; $$ language plpgsql;
    
    select f_iu7YttW(:para);
    
    drop function f_iu7YttW(integer);
    

    関数に一意の名前を付けて、他のものを落とすリスクを冒さないようにします。




    1. SQL Server、Python、およびOS X

    2. 他の列に基づく値と選択からpostgresで列を作成するにはどうすればよいですか?

    3. 高可用性のためにPostgreSQLを使用してTeamcityをデプロイする方法

    4. MYSQLの最後のログインと過去3か月のログイン数