2016-07-24 2 views
0

3行を更新するが、RETURNS VOIDと宣言されているHaskellのPostgres関数を実行します。次のように私は、機能を実行します。PostgreSQL - 関数の単純な `execute`が失敗しました。"結果がCol 1カラムの結果を返しました "

catch (do execute conn "select record(?,?)" [id1, id2]) 
     (\(e :: SomeException) -> do putStrLn ("Exception:" ++ (show e)); return False) 

をが、これは、その結果:クエリが結果を返さない

QueryError {qeMessage = "execute resulted in Col 1-column result", qeQuery = "select record(?,?)"} 

ebdb=> select record('',''); 
record 
-------------------- 

(1 row) 

どのように私はHaskellのからこのPostgreSQLの機能を実行することができます?

答えて

1

私はexecuteの代わりにqueryを使用してみます:

query conn "select 1 from record(?,?)" [id1, id2] 

executeINSERTUPDATE、などのような文にありますあなたのステートメントは行を返さなくても、まだSELECTなので、queryを実行する必要があると思います。

1

このトリッキーなクエリはまだ機能が実行され、行が戻されない:

select 1 where record('', '') isnull; 
+0

同じエラーが発生します。私は今のところクエリに変換しています。ありがとうございました。 –

関連する問題