LZ你让sWorkerID='2,6,8'不就可以了
你那样传进去的是
Select * from UserInfo
Where WorkID In ((2,6,8));
你那样传进去的是
Select * from UserInfo
Where WorkID In ((2,6,8));
解决方案 »
- 热备份还原问题
- 急!编写一查询,显示姓名中含有字符T的雇员所在的部门内的所有雇员的编号和姓名,并将该查询保存成文件p6q1.sql。
- 如何入门ORACLE数据库开发
- 各位看看我代码到底错在哪里
- 为什么我的ORACLE装完提示这个?如何解决?
- 复合索引与单独索引优先级,以及rebuild索引的存储过程
- 客户不允许在他们的DB上建触发器,求感知表变化的算法或者思路
- 如何在sqlplus中断开一个用户的所有连接?
- 请教:关于 oracle9i 在windows2000下的安装问题——在线等待~_~
- proc 游标问题:如何判断一个游标的开关状态?
- 高分求教,数据库参数配置的问题~
- 怎样测试用自己写的sql后者pl/sql 测试pl/sql??????
Select * from UserInfo Where WorkID In (sWorkerID);
-----------------------------------------------------
如果是数字型,这么写肯定会出错的,最好是用动态SQL写SQL> DECLARE
2 sWorkerID VARCHAR2(200);
3 strsql VARCHAR2(2000);
4 cnt NUMBER;
5 BEGIN
6 sWorkerID := '7934,7902,7876';
7 strsql := 'Select count(*) from emp Where empno In (' || sWorkerID || ')';
8 EXECUTE IMMEDIATE strsql INTO cnt;
9
10 dbms_output.put_line(cnt);
11
12 END test;
13 /PL/SQL procedure successfully completed
WorkID In (2,6,8); IN 子句后好像不能用变量
strsql:='Select count(*) from UserInfo Where WorkID In ' || sWorkerID;
WorkID In (2,6,8); IN 子句后好像不能用变量
-----------------------------------------------不是IN 子句后不能用变量,而是静态sql中变量只能作为1个值,sWorkerID := '2,6,8'时会对'2,6,8'做隐式类型转换而出错,不是把2,6,8作为3个值使用,试试 sWorkerID := '8'就不会出错了,用动态sql就没问题了