-------------------------------定义部分
create or replace package fun_hlzh
as
type mycursor is ref cursor;
function hlzh(strsql in varchar2) return mycursor;
end;
/
create or replace package body fun_hlzh
as
function hlzh(strsql in varchar2) return mycursor
as
rc mycursor;
begin
open rc for strsql;
return rc;
end;
end;----------------------- 执行部分
declare
ssql varchar(8000);
begin
ssql:='select name';
for m in (select ',sum(case km when '''||rtrim(a.km)||''' then cj end;) ['||rtrim(a.km)||']' l from (select distinct km from test) a) loop
ssql:=ssql||m.l;
end loop;
ssql:=ssql||' from test group by name;';
--dbms_output.put_line(ssql);
execute immediate fun_hlzh.hlzh(ssql);
end;
--------------------------
定义部分和执行部分在plsql developer的sql窗口中各自分别执行.定义部分总是有错误出现.请帮我看看是哪里有问题,我实在看不出来??? 如果定义部分成功,在ssql的字符串没有问题的情况下,执行部分可成功运行吗?如果不行,要怎么修改呢?
create or replace package fun_hlzh
as
type mycursor is ref cursor;
function hlzh(strsql in varchar2) return mycursor;
end;
/
create or replace package body fun_hlzh
as
function hlzh(strsql in varchar2) return mycursor
as
rc mycursor;
begin
open rc for strsql;
return rc;
end;
end;----------------------- 执行部分
declare
ssql varchar(8000);
begin
ssql:='select name';
for m in (select ',sum(case km when '''||rtrim(a.km)||''' then cj end;) ['||rtrim(a.km)||']' l from (select distinct km from test) a) loop
ssql:=ssql||m.l;
end loop;
ssql:=ssql||' from test group by name;';
--dbms_output.put_line(ssql);
execute immediate fun_hlzh.hlzh(ssql);
end;
--------------------------
定义部分和执行部分在plsql developer的sql窗口中各自分别执行.定义部分总是有错误出现.请帮我看看是哪里有问题,我实在看不出来??? 如果定义部分成功,在ssql的字符串没有问题的情况下,执行部分可成功运行吗?如果不行,要怎么修改呢?
解决方案 »
- OracleCSService服务问题
- 求多表连接和左右连接的示例!
- 回退段和重做日志缓冲区的区别和联系(问题没解决)
- data guard如何在主库宕掉的情况下,将逻辑备库转换成主库?
- 如何单独导出Oracle的所有用户和权限?
- Oracle中select 语句有partition 和 subpartition是做什么用的 有没有例子语句?
- 求助:关于动态组合oracle存储过程参数
- 请问各位大侠!!我怎么在过程中无法访问sys.dba_data_files这个表呢.用单独的SQL语句都可以查看!(都在同一用户下)
- 请问:存储过程中如何使用临时表?我的SQL错在哪里?
- oracle新手,请教一个安装和配置的问题。求有经验的前辈帮助!谢谢!
- 可以这样得到变量的值吗?
- oracle中,怎样得到cpu的序列号!
as
type mycursor is ref cursor;
function hlzh(strsql in varchar2) return mycursor;
end fun_hlzh;
/
create or replace package body fun_hlzh
as
function hlzh(strsql in varchar2) return mycursor
as
rc mycursor;
begin
open rc for strsql;
return rc;
end hlzh;
end fun_hlzh;
ERROR 位于第 10 行:
ORA-06550: 第 10 行, 第 20 列:
PLS-00382: 表达式类型错误
ORA-06550: 第 10 行, 第 2 列:
PL/SQL: Statement ignored
------------------------------------
我改写成如下语句进行测试:
begin
execute immediate fun_hlzh.hlzh('select * from test');
end;
执行后仍然有类似的提示:
ERROR 位于第 2 行:
ORA-06550: 第 2 行, 第 19 列:
PLS-00382: 表达式类型错误
ORA-06550: 第 2 行, 第 1 列:
PL/SQL: Statement ignored
这是怎么回事????
cursor怎么用它就怎么用
as
type mycursor is ref cursor;
function hlzh(strsql in varchar2) return mycursor;
end fun_hlzh;
/
create or replace package body fun_hlzh
as
function hlzh(strsql in varchar2) return mycursor
as
rc mycursor;
begin
open rc for strsql;
return rc;
end hlzh; ------去掉hlzh
end fun_hlzh;一楼的去掉hlzh就检测通过的