可能有的人已经看到了我的StrWhere变量中的字段名没有加表名前缀,现在把StrWhere变量去除也不行.
也就是不用StrWhere
即:
if StrWhere is not null then
strSql := StrSql;
end if;
我的Sql语句是没有问题,只是Open...For...有点问题!请高手来指点一下吧!Oracle的帮助里面说是可以的!
DECLARE
TYPE EmpCurTyp IS REF CURSOR; -- define weak REF CURSOR type
emp_cv EmpCurTyp; -- declare cursor variable
my_ename VARCHAR2(15);
my_sal NUMBER := 1000;
BEGIN
OPEN emp_cv FOR -- open cursor variable
'SELECT ename, sal FROM emp WHERE sal > :s' USING my_sal;
...
END;
这是帮助里面的例子!
我用的是PL/SQL
在我的机器里这样子写就可以:
open prmList for
Select * from CFY001;
也就是说可以直接用语句!不能用字符串或变量!
也就是不用StrWhere
即:
if StrWhere is not null then
strSql := StrSql;
end if;
我的Sql语句是没有问题,只是Open...For...有点问题!请高手来指点一下吧!Oracle的帮助里面说是可以的!
DECLARE
TYPE EmpCurTyp IS REF CURSOR; -- define weak REF CURSOR type
emp_cv EmpCurTyp; -- declare cursor variable
my_ename VARCHAR2(15);
my_sal NUMBER := 1000;
BEGIN
OPEN emp_cv FOR -- open cursor variable
'SELECT ename, sal FROM emp WHERE sal > :s' USING my_sal;
...
END;
这是帮助里面的例子!
我用的是PL/SQL
在我的机器里这样子写就可以:
open prmList for
Select * from CFY001;
也就是说可以直接用语句!不能用字符串或变量!
create or replace procedure
prc_TestList( prmAppCode out Number, --过程执行返回的代码
prmErrMsg out VarChar2) --过程执行返回的信息
is
strSql Varchar2(255);
type c is REf Cursor ;
curTemp C;
begin
StrSql := 'Select A.BM0001,A.MC0001,A.LXDH01,A.LXSJ01,A.ZT0001,B.YYZF01 as ZT0002 From CFY001 A,ZHCS01 B '||
' Where B.MC0001 =''CFYZT1'' and B.BL0001 = A.ZT0001';
Open curTemp for StrSql ;
exception
when others then
prmAppcode := -2009;
prmErrMsg := '执行返回错误';
end ;