存储过程参数的值不能有逗号? 存储过程有一个参数,如果传入的值是:1,2,3那么在sql中的in后面使用时,系统会自动加上引号,变成:'1,2,3'不知大虾是否有比较简便的方法可以搞定这是问题?谢先! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会有这种问题你是在组合动态sql语句的过程中吗?你必须使用动态sql才能达到你的效果 存储过程中的sql是静态的,只是有几个参数是从外面传给存储过程的,放在sql中的in的括号里面。比如传进来的就是:1,2,3除了用动态sql,是否有别的方法?谢先! 没有什么别的好办法了动态sql很简单的v_count number;begin...str:='select count(1) from tbname where col in('||v_in||')';execute immediate str into v_count;... 你的参数类型是什么的,我用char试了一下,没问题的CREATE OR REPLACE procedure p1(ccc IN char,bbb in char)...dbms_output.put_line(ccc);dbms_output.put_line(bbb);..........sqlplus :execute p1(1,2)12过程成功执行 写错了execute p1(1,2) 他是要传一个参数里面,包括逗号。因为参数是一逗号分隔的,所有ORACLE会加上单引号,加以区分 其实你完全可以到里面在分割,要实现也可以, CREATE OR REPLACE procedure p1(ccc IN char) is begin dbms_output.put_line(ccc); end;PL/SQL procedure successfully completed.SQL> execute p1('1'||chr(44)||'2'||chr(44)||'3');1,2,3PL/SQL procedure successfully completed. 请教一个透明网关的查询问题 怎么在创建表时定义外键? 以下SQL插入语句哪里出错?请高手解答 表副本解决方案 ENABLE VALIDATE? raise 使用问题 求一条select 语句,急,顶着有分 vc下大家都用什么库来访问数据库? 如何import导入一个库所有内容?马上结 各位英雄在写pl/sql时用什么工具啊? 执行计划的巨大差异 oracle数据导入问题(紧急)
你是在组合动态sql语句的过程中吗?
你必须使用动态sql才能达到你的效果
比如传进来的就是:
1,2,3
除了用动态sql,是否有别的方法?
谢先!
动态sql很简单的
v_count number;
begin
...
str:='select count(1) from tbname where col in('||v_in||')';
execute immediate str into v_count;
...
CREATE OR REPLACE procedure p1(ccc IN char,bbb in char)
...
dbms_output.put_line(ccc);
dbms_output.put_line(bbb);
.....
.....sqlplus :
execute p1(1,2)
1
2过程成功执行
execute p1(1,2)
因为参数是一逗号分隔的,所有ORACLE会加上单引号,加以区分
CREATE OR REPLACE procedure p1(ccc IN char) is
begin
dbms_output.put_line(ccc);
end;
PL/SQL procedure successfully completed.
SQL> execute p1('1'||chr(44)||'2'||chr(44)||'3');
1,2,3PL/SQL procedure successfully completed.