oracle 存储过程 where in参数传入问题

摘要:
问题:举一个简单的例子来说明创建或替换过程procStr(varchar2中的inString)asbeginselect*from book where id in(inString);结束procStr;我不能在inString中输入'21,22',21,22'','21','22'。请询问如何通过参数为存储过程的in语句赋值

问题:

举个简单例子说明
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参数传入问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Log4j使用指南python3下pygame显示中文的设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ora-1157 ora-1110错误解决案例一枚

1、数据库打开报错如下: SQL> alter database open; alter database open * ERROR at line 1: ORA-01157: cannot identify/lock data file 4 - see DBWR trace file ORA-01110: data file 4: '/...

sql xml操作

T-Sql操作Xml数据 一、前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。 用户将一个XML数据存入数据库的时...

Oracle系统表大全(转)

下面全面是对Oracle系统表的一些介绍: 数据字典dict总是属于Oracle用户sys的。   1、用户:    select username from dba_users;   改口令    alter user spgroup identified by spgtest;   2、表空间:    select * from dba_data_fi...

js 默认选中select 选项

<select style=" 150px;"><option value="0">请选择</option><asp:Repeater runat="server"><ItemTemplate><option value="<%#Eval("code") %>"><%...

一则 Oracle 和 SqlServer 语法区别 (原创)

Sql Server /Oracle--返回第一行数据SELECT TOP 1 * FROM TableName / SELECT * FROM TableName WHERE ROWNUM=1--返回前五行数据SELECT TOP 5 * FROM TableName/SELECT * FROM TableName WHERE ROWNUM <=...

win10 oracle11g Navicat 连接记录

一. 安装oracle11g服务端 1. 安装参考 https://www.cnblogs.com/liuhongfeng/p/5267549.html 2. 安装好后 oracle默认localhost访问的 需要再进行配置 服务端配置 tnsnames.ora 及 listener.ora 我的目录在 d:/app/Administrator/prod...