oracle在执行SQL语句是。有同名变量怎么绑定啊

ighack 2021-03-26 03:24:25
SELECT *
FROM (SELECT T_GDS.OWNER_NO,
T_GDS.GOODS_NO,
T_GDS.GOODS_NAME,
T_GDS.GOODS_LENGTH,
T_GDS.GOODS_WIDTH,
T_GDS.GOODS_HEIGHT,
T_GDS.MARKETINGAUTHORISATIONHOLDER,
(SELECT MIN(T_STK.DISPLAY_LOCATION)
FROM VIW_FD_STOCK T_STK
WHERE T_STK.GOODS_ID = T_GDS.GOODS_ID) DISPLAY_LOCATION
FROM FD_GOODS T_GDS
LEFT JOIN REC_GOODS_RST T_RST
ON T_GDS.GOODS_ID = T_RST.GOODS_ID
WHERE T_GDS.IS_AVAILABLE = 'Y'
AND T_RST.LWH_MOD_FLG IS NULL
AND T_GDS.IS_GIFT = 'N'
AND (T_GDS.GOODS_LENGTH < = 1 OR T_GDS.GOODS_WIDTH < = 1 OR
T_GDS.GOODS_HEIGHT < = 1)
AND EXISTS
(SELECT 1 FROM FD_STOCK T WHERE T.GOODS_ID = T_GDS.GOODS_ID))
WHERE (:GOODS_NO IS NULL OR GOODS_NO LIKE '%' || :GOODS_NO || '%')
AND (:GOODS_NAME IS NULL OR GOODS_NAME LIKE '%' || :GOODS_NAME || '%')
AND (:DISPLAY_LOCATION IS NULL OR DISPLAY_LOCATION LIKE '%' || :DISPLAY_LOCATION || '%')
ORDER BY DISPLAY_LOCATION,GOODS_NO


我是这样做的,选生成perpareCall对像
call = conn.prepareCall(SQL);

然后换名字绑定
call.setObject("GOODS_NO", obj.get("Value"), obj.getInteger("Type"))
call.setObject("GOODS_NAME", obj.get("Value"), obj.getInteger("Type"))
call.setObject("DISPLAY_LOCATION", obj.get("Value"), obj.getInteger("Type"))

但程序报错
java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 4

然后我有6个变量但是同名的。实际只有3个。我也绑定了三个。但还是报错。但在.NET里这个同名变量绑定是可以正常执行的

就算我把同名的变量绑定两次也不行。报同样的错误
...全文
105 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧