码迷,mamicode.com
首页 > 数据库 > 详细

in 多个数据使用动态SQL传入字符串

时间:2015-02-06 18:42:16      阅读:422      评论:0      收藏:0      [点我收藏+]

标签:

in 多个数据使用动态SQL传入字符串
1.动态SQL传入字符串
CREATE OR REPLACE PROCEDURE p_test (v_str VARCHAR2) AS
  TYPE cur_type IS REF CURSOR ;
  c_fzt cur_type;
      v_sql VARCHAR2( 2000);
      v_jrh VARCHAR2( 20);
BEGIN
  v_sql:=' SELECT jrh FROM fzt_dd WHERE rownum<10 and prod_name IN ('||v_str ||')' ;
      OPEN c_fzt FOR v_sql;
      LOOP
        FETCH c_fzt INTO v_jrh;
            EXIT WHEN c_fzt %NOTFOUND ;
           dbms_output.put_line (v_jrh );
      END LOOP;
END;
 

BEGIN
p_test( '''普通电话'',''宽带''' );
END;

2.动态SQL传入数字
CREATE OR REPLACE PROCEDURE p_test (v_str VARCHAR2) AS
  TYPE cur_type IS REF CURSOR ;
  c_fzt cur_type;
      v_sql VARCHAR2( 2000);
      v_jrh VARCHAR2( 20);
BEGIN
  v_sql:=' SELECT jrh FROM fzt_dd WHERE rownum<10 and prod_spec_id IN ('||v_str ||')' ;
      OPEN c_fzt FOR v_sql;
      LOOP
        FETCH c_fzt INTO v_jrh;
            EXIT WHEN c_fzt %NOTFOUND ;
           dbms_output.put_line (v_jrh );
      END LOOP;
END;
 

BEGIN
p_test( '9,2');
END;

3.动态SQL传入SQL表
CREATE OR REPLACE PROCEDURE p_test (v_str VARCHAR2) AS
  TYPE cur_type IS REF CURSOR ;
  c_fzt cur_type;
      v_sql VARCHAR2( 2000);
      v_jrh VARCHAR2( 20);
BEGIN
  v_sql:=' SELECT jrh FROM fzt_dd WHERE rownum<10 and prod_spec_id IN ('||v_str ||')' ;
      OPEN c_fzt FOR v_sql;
      LOOP
        FETCH c_fzt INTO v_jrh;
            EXIT WHEN c_fzt %NOTFOUND ;
           dbms_output.put_line (v_jrh );
      END LOOP;
END;
 

BEGIN
p_test( 'select prod_spec_id from fzt_dd where prod_name=''普通电话''' );
END;




in 多个数据使用动态SQL传入字符串

标签:

原文地址:http://www.cnblogs.com/highroom/p/7bade31f9db2f8b6a6c12a9758a882f7.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!