报表中如何一次性给一参数输入多个值(以逗号隔开)

[复制链接]
查看11 | 回复4 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
比如说,提交一报表,其中有一参数:网络代码,现在输入参数时想一次性输入多个值,每个值之间以逗号隔开,如(755,574,731)。我用一个函数将输入的参数(755,574,731)转换为('755','574','731')传递给主程序(条件语句写成where org_id in v_org_id),输出结果记录数为空。请教高人,该如何实现
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
可以考虑动态SQL!



回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
条件语句写成where org_id in v_org_id,那么oracle就把V_ORG_ID的值作为整体来处理了
实际应该:
declare
begin
v_org_id := '(755,574,731)';
lvc_sql := 'select count(*) from test where org_id in '||v_org_id;
execute immediate lvc_sql into ln_result;
dbms_output.put_line(ln_result);
end;
/
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
最初由 errol.zhou 发布
[B]比如说,提交一报表,其中有一参数:网络代码,现在输入参数时想一次性输入多个值,每个值之间以逗号隔开,如(755,574,731)。我用一个函数将输入的参数(755,574,731)转换为('755','574','731')传递给主程序(条件语句写成where org_id in v_org_id),输出结果记录数为空。请教高人,该如何实现 [/B]

SQL> select ''''||replace('755,574,731',',',''',''')||'''' from dual
2/
''''||REPLACE('75
-----------------
'755','574','731'
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
最初由 beanslee 发布
[B]条件语句写成where org_id in v_org_id,那么oracle就把V_ORG_ID的值作为整体来处理了
实际应该:
declare
begin
v_org_id := '(755,574,731)';
lvc_sql := 'select count(*) from test where org_id in '||v_org_id;
execute immediate lvc_sql into ln_result;
dbms_output.put_line(ln_result);
end;
/ [/B]

和列的数据类型有关系!
[php]
SQL> set serveroutput on
SQL>
SQL> declare
2v_sql varchar2(100);
3n_cnt number;
4begin
5v_sql:='(20,10)';
6v_sql:='select count(*) from emp where deptno in '||v_sql;
7execute immediate v_sql into n_cnt;
8dbms_output.put_line(n_cnt);
9end;
10/
8
PL/SQL procedure successfully completed
SQL>
SQL> declare
2v_sql varchar2(100);
3n_cnt number;
4begin
5v_sql:='(CLERK,SALESMAN)';
6v_sql:='select count(*) from emp where job in '||v_sql;
7execute immediate v_sql into n_cnt;
8dbms_output.put_line(n_cnt);
9end;
10/
declare
v_sql varchar2(100);
n_cnt number;
begin
v_sql:='(CLERK,SALESMAN)';
v_sql:='select count(*) from emp where job in '||v_sql;
execute immediate v_sql into n_cnt;
dbms_output.put_line(n_cnt);
end;
ORA-00904: "SALESMAN": 无效的标识符
ORA-06512: 在line 7
SQL>
[/php]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行