2016-07-24 5 views
0

3 행을 업데이트하지만 RETURNS VOID으로 선언 된 Haskell의 Postgres 함수를 실행하고 싶습니다.함수에서 PostgreSQL- 간단한`execute` 함수가 "콜 1 열 결과를 얻었습니다"와 일치하지 않습니다.

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

(1 row) 

나는 하스켈에서이 PostgreSQL의 기능을 실행할 수있는 방법 : 쿼리 결과를 반환하지 않습니다

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

다음과 같이 나는 기능을 실행

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

을하지만이 결과 ?

답변

1

내가 execute 대신 query를 사용하려고 할 것입니다 :

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

executeINSERT, UPDATE 등 같은 문장입니다 귀하의 진술은 행을 반환하지 않지만 여전히 SELECT이므로 query을 사용하여 실행해야한다고 생각합니다.

1

이 복잡한 쿼리는 여전히 기능이 실행되고, 어떤 행을 반환하지 않습니다 :

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

같은 오류가 발생했습니다. 나는 지금 질의로 전환하는 것으로 갔다. 고맙습니다. –