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

psqlで位置パラメータ($ 1、..)を使用する

    psql変数 を使用できます。 。それらはSQLコードで補間されます。 ドキュメントごと:

    ドキュメントごと に注意してください。 ):

    したがって、$1の形式の位置パラメータを操作することはできません。 。これらのコードを関数本体からコピーすると仮定します。これが位置パラメーターの理由です。
    PostgreSQL9.2以降、SQL関数でも名前でパラメーターを参照できます。 ドキュメントごと:

    PL / pgSQL関数は、v8.0以降、関数本体で名前付きパラメータをサポートしています。

    私の好みの命名規則は、関数パラメーターの前に_を付けることです。 名前の競合を避けるため。しかし、それは好みとスタイルの問題です。

    ソリューションの半分のみ

    したがって、あなたの例は次のように機能する可能性があります:

    db=> \set _name 'troy'
    db=> \set _email '[email protected]'
    db=> select * from users where name=:'_name' and email=:'_email'; 
    

    クエリ文字列を準備する必要があります...
    :'_name' 。これは、quote_literal()を適用するのと同じ効果があります 文字列に。 詳細はマニュアルに記載されています。



    1. MySQLでSUM()が機能しない:DISTINCTを使用したSUM()

    2. OracleFormBuilderエラーFRM-10044のトラブルシューティング

    3. geodjangoのk最近傍を取得するにはどうすればよいですか?

    4. 更新の数を数える