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

日付$1のパラメーター化されたクエリでのPostgreSQL構文エラー

    プリペアドステートメント

    これについての説明は、他のタイプの定数の章 マニュアルの

    大胆な強調鉱山。

    プリペアドステートメントのパラメータは、実際にはリテラルを使用するではありません。 ただし、を入力しました 、したがって、 type'string'の形式は使用できません。 。他の2つのフォームのいずれかを使用して、すでに自分で見つけたように、値を別のタイプにキャストします。

    例:

    PREPARE foo AS SELECT $1::date;
    
    EXECUTE foo('2005-1-1');
    

    PQexecParamsと同様 libpqCライブラリ内

    ドキュメント:

    代替 、上記の引用で述べたように、それぞれのデータ型のOIDを paramTypes []で渡すことです。 -実際にキャストが必要な場合。ほとんどの場合、Postgresがクエリコンテキストからデータ型を派生させることは問題なく機能するはずです。

    データ型のOIDは、システムカタログ<から取得できます。 code> pg_type

    SELECT oid FROM pg_type WHERE typname = 'date';
    

    正しい内部タイプ名を使用する必要があります。例: int4 integerの場合 。
    または、便利なキャストを使用して regtype

    SELECT 'date'::regtype::oid;
    

    タイプ名の既知のエイリアスも受け入れられるため、これはより柔軟です。例: int4 int またはinteger integerの場合 。



    1. MySQL IN句:引数の最大数

    2. QSqlQueryModelのデータをQMLTableViewに表示できません

    3. Delphi-使用するMySQLの最高のデータ対応コンポーネント

    4. MySQLの最新性からパーセンタイルを計算する