【发布时间】:2011-10-09 05:04:40
【问题描述】:
这是查询:
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:
我又发现了一个更短一点的查询,但会导致相同的错误消息:
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 作为结果。
【问题讨论】:
-
使您的查询可读将是朝着正确方向迈出的一步 =D
-
那些问号是什么?尤其是这部分:
(?,?)? -
这个命令是怎么执行的?
-
如果您单独运行每个位?
-
可能没有指定
TypePkString的值?您的值仅显示数字...