在存储过程中
procedure test_m(pClassType VarChar,pDs Out rcDataset)
as
vClass varchar(20);
begin
select '''早班'',''中班''' into vClass from dual;
Open pDs For select count(*) aaa from SurfaceQuality_961 where ClassType In (vClass);
end;
返回是0
但是 直接查询Open pDs For select count(*) aaa from SurfaceQuality_961 where ClassType In ('早班','中班');结果是840,请教是什么原因?传参数的结果跟用变量的一样.
谢谢!
procedure test_m(pClassType VarChar,pDs Out rcDataset)
as
vClass varchar(20);
begin
select '''早班'',''中班''' into vClass from dual;
Open pDs For select count(*) aaa from SurfaceQuality_961 where ClassType In (vClass);
end;
返回是0
但是 直接查询Open pDs For select count(*) aaa from SurfaceQuality_961 where ClassType In ('早班','中班');结果是840,请教是什么原因?传参数的结果跟用变量的一样.
谢谢!
解决方案 »
- 大家帮忙看看这个是什么意思!!在线等!!!!!!!!
- oracle触发器 给某张表增加字段
- 索引与字段类型的关系
- 时间格式的小问题
- ORA-00988: missing or invalid password(s)
- oralce 数据库导入问题.
- 用netca进行LISTENER配置, 为啥老提示 " 启动监听程序失败。监听程序可能已经在运行。"?
- Sql Server 2000和Oracle9i动态数据交换,可以在oracle9i中使用触发器调用WebService吗??
- 有关DML.RETURNING.CLAUSE和subquery
- oracle的回滚段或是撤销表空间怎么调整?寻求方案
- 如何把lotus的数据导入到Oracle中啊?简单类型的我已经作了,对于RTF域和附件呢?
- 在pl/plus中,用sa/11@Oracle9I登陆后,如何知道这个用户已经建立了多少张表?
Open pDs For select count(*) aaa from SurfaceQuality_961 where instr(ClassType,''''||vClass||'''')>0;
...
所以你做的替换时没有意义的。
好像可以不建临时表, execute immediate () using () into (); into 就是最后的结果去的地方了,可以给到一个变量里。——但是结果集如果不是一条,菜鸟我就不知道怎么处理了。
create or replace package pkg_test
as
type myCursor is ref cursor;
function get(p_id number) return myCursor;
end pkg_test;create or replace package body pkg_test
as
--输入ID 返回记录集的函数
function get(p_id number) return myCursor is
rc myCursor;
strsql varchar2(200);
begin
if p_id=0 then
open rc for select a.user_name from fnd_user a ;
else
strsql:='select a.user_name from fnd_user a where a.user_id=:p_id';
open rc for strsql using p_id;
end if;
return rc;
end get;
end pkg_test;
调用方式
pkg_test.get(yournum)