问题:

举个简单例子说明
create or replace procedure procStr(inString in varchar2)
as
begin
select * from book where id in (inString);
end procStr;

我在inString中输入‘21,22’,21,22,‘‘21’,‘22’’
都不行,请教各位大侠如何通过参数,给存储过程的in语句进行赋值

其中inString中id的个数是不定的,多少都有可能

解决办法:

1.

create or replace procedure procStr(inString in varchar2)
as
begin
execute immediate 'select * from book where id in ('||inString||')';
end procStr;

2.

-- 给个例子给你:
CREATE OR REPLACE PACKAGE pkg_emp
AS 
  TYPE myrctype IS REF CURSOR;
  PROCEDURE Get_empinfo(v_empno IN VARCHAR2, p_rc OUT myrctype);
END pkg_emp;
/
 
CREATE OR REPLACE PACKAGE BODY pkg_emp
AS
  PROCEDURE Get_empinfo(v_empno IN VARCHAR2, p_rc OUT myrctype)
  IS
    sqlstr VARCHAR2(4000);
  BEGIN
    sqlstr := 'SELECT * FROM emp WHERE empno IN ('||v_empno||')';
    OPEN p_rc FOR sqlstr;
  END Get_empinfo;
END pkg_emp;
/
 
SQL> var v_rc refcursor;
SQL> exec pkg_emp.Get_empinfo('7902,7788',:v_rc);
SQL> print v_rc;
 
3.create or replace procedure procStr(inString in varchar2)
as
sys_refcursor resultcur ;
begin
open resultcur for 'select * from book where id in (' || inString || ')';
end procStr;

oracle 存储过程 where in参数传入问题的更多相关文章

  1. oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案

    1. 创建自定义的类型.由于Oracle没有提供现成的array类型,这里用table类型来模拟. CREATE OR REPLACE TYPE varchar_array is Table OF v ...

  2. mysql实现oracle存储过程默认参数

    我们都知道oracle存储过程支持为参数设置默认值,这样即使存储过程升级,原来的调用也可以不受影响.但是mysql不支持,mariadb也没有支持(截止10.4也是如此).但是这一限制会导致升级麻烦重 ...

  3. oracle 存储过程 动态sql语句

    一.在oracle项目开发中越到问题: 在利用ODP向oracle中插入数据时,如果这样写:   insert into clobTable (id, story) values(1,'....'); ...

  4. Oracle存储过程创建及调用

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  5. Oracle存储过程创建及调用(转)

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  6. Oracle存储过程 --3

    Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 1 create or replace pro ...

  7. oracle 存储过程调用方式

    Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 1 create or replace pro ...

  8. Oracle 存储过程或函数传入的数值参数number

    在oralce中,如果存储过程需要接收含有数值类型的参数时,如何声明呢.如下: CREATE OR REPLACE PACKAGE GPS.PKG_MONTH_TARGET AS ---------- ...

  9. Oracle存储过程in、out、in out 模式参数

    Oracle存储过程in.out.in out 模式参数 标签: oracle存储inout参数 2016-11-14 11:59 3272人阅读 评论(0) 收藏 举报  分类: oracle(7) ...

随机推荐

  1. LeetCode 新题: Find Minimum in Rotated Sorted Array 解题报告-二分法模板解法

    Find Minimum in Rotated Sorted Array Question Solution Suppose a sorted array is rotated at some piv ...

  2. strcat

    将两个char类型链接. char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s); 结果放在d中 prin ...

  3. 浅谈C#委托和事件【转】

    委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本 ...

  4. MyEclipse9.0激活步骤

    MyEclipse 9.0的激活机制 1.破解公钥(确保MyEclipse没有开启,否则失败!)   解压破解包中的myeclipse9_keygen_activator.zip,复制publicKe ...

  5. 基于HTML5 SVG和CSS3炫酷蹦床式图片切换特效

    今天给大家分享一款效果非常炫酷的HTML5 SVG和CSS3蹦床式图片切换特效插件.该图片切换插件在进行图片切换时,整个屏幕就像一张大蹦床一样,将图片弹射出去,切换到另一张图片,效果非常有创意.效果图 ...

  6. 大数据之ETL工具Kettle的--1功能介绍

    Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用. ...

  7. CentOS 7 系统下安装gnome图形界面

    在安装Gnome 包之前,我们需要先检查下安装源是否正常,因为我们要通过yum命令来安装gnome包, 而yum命令式通过yum 源来下载安装包的. 1.在命令行下输入下面的命令来安装 Gnome 包 ...

  8. 在WMware新建一个虚拟机

  9. contiki rpl

    Linking target: udp-client-temperature.stk3700arm-none-eabi-gcc -Xlinker -Map=udp-client-temperature ...

  10. lua 的io操作,非常详细

    Lua 标准库 - 输入输出处理(input and output facilities) I/O库提供两种不同的方式进行文件处理 1.io表调用方式:使用io表,io.open将返回指定文件的描述, ...