oracle在执行SQL语句是。有同名变量怎么绑定啊
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里这个同名变量绑定是可以正常执行的
就算我把同名的变量绑定两次也不行。报同样的错误
...全文
相关推荐
oracle高效语句编写知识.doc
**使用相同的绑定变量名称**:如果SQL语句中包含绑定变量,那么这些绑定变量的名称也必须完全一致。### 示例分析假设存在两个用户:Jack和Jill。
oracle性能优化技巧
这是因为Oracle可以复用含有相同绑定变量的SQL语句的执行计划,从而避免了不必要的解析操作。
ORACLE SQL性能调整
如果涉及到同名但不同权限的对象(如私有同义词与公共同义词),则视为不同的对象,无法共享。 3. **绑定变量的一致性**:两个SQL语句中使用的绑定变量名称必须一致。
ORACLE SQL性能优化系列
- **绑定变量的一致性**:即使绑定变量的名称不同,但只要在运行时它们的值相同,这样的SQL语句也是可以共享的。
Oracle_SQL_优化
- **绑定变量**:使用绑定变量可以提高SQL语句的复用性,减少硬解析。 - **查询重写**:利用数据库的查询重写功能,将复杂查询转换为更高效的执行计划。


Java SE
