2

これはクエリです:

SELECT DISTINCT pprom.pk
FROM
(
    SELECT
      item_t0.SourcePK as pk
    FROM
      links item_t0
    WHERE (? =  item_t0.TargetPK   AND  item_t0.SourcePK  in (?,?))
    AND (item_t0.TypePkString=? )
    UNION
    SELECT
      item_t1.TargetPK as pk
    FROM
      cat2prodrel item_t1
    WHERE ( item_t1.SourcePK  in (? )  AND  item_t1.TargetPK  in (?,?))
    AND (item_t1.TypePkString=? )
) AS pprom

そして、これはエラーです:

ORA-00933: SQL command not properly ended

何が間違っている可能性がありますか?

編集:

疑問符は、それぞれの項目の PK に置き換えられます。

values = [PropertyValue:8802745684882, PropertyValue:8796177006593, PropertyValue:8796201713665, 8796110520402, PropertyValue:8796125954190, PropertyValue:8796177006593, PropertyValue:8796201713665, 8796101705810]

編集2:

クエリは独自のソフトウェア システムの奥深くで実行されるため、クエリを実行するコードが正確にはわかりません。

編集3:

少し短いクエリをもう 1 つ見つけましたが、同じエラー メッセージが表示されます。

SELECT DISTINCT pprom.pk 
FROM 
( 
    SELECT  
        item_t0.SourcePK  as pk 
    FROM 
        links item_t0 
    WHERE (? =  item_t0.TargetPK  AND  item_t0.SourcePK  in (?)) 
        AND (item_t0.TypePkString=? )  
) AS pprom

次の値を使用します。

values = [PropertyValue:8799960601490, PropertyValue:8796177006593, 8796110520402]

編集 4

値を置き換えた後にデータベースに送信される SQL コードを見つけました。

SELECT DISTINCT pprom.pk 
FROM 
( 
    SELECT  
        item_t0.SourcePK  as pk 
    FROM 
        links item_t0 
    WHERE (8801631769490 =  item_t0.TargetPK   AND  item_t0.SourcePK  in (8796177006593)) 
        AND (item_t0.TypePkString=8796110520402 )  
) AS pprom

内部の SELECT ステートメントも実行しようとしましたが、それだけで問題なく実行され、結果として単一の PK が返されます。

4

1 に答える 1

3

クエリに明らかな構文エラーが見つからなかったので、?プレースホルダーを実際の値に変換するために使用しているクライアント ライブラリに問題があると推測します。質問の編集では、整数が 8 個あるがPropertyValue項目が 6 個しかない一種のダンプが表示されます。それが問題ではないことを確認してください: IN (?, ?)2 つのパラメーターが必要です。

編集

ASサブクエリにエイリアスを割り当てるときは、キーワードを削除してみてください。

SELECT DISTINCT pprom.pk 
FROM 
( 
    SELECT  
        item_t0.SourcePK  as pk 
    FROM 
        links item_t0 
    WHERE (8801631769490 =  item_t0.TargetPK   AND  item_t0.SourcePK  in (8796177006593)) 
        AND (item_t0.TypePkString=8796110520402 )  
) AS pprom
  ^^
于 2011-07-20T09:00:26.200 に答える