oracle存储返回游标,如何接收存储过程返回的游标
ORACLE 11203,
同事咨询:下面的这段存储过程getNCInventory,在PL/SQL DEVELOPER开发工具的对该过程调用TEST功能来测试(只输入2个参数),但
放到SQLPLUS里就报错:
YQ@oeldzdz>declare
2 cur_calling pkg_nc_getdata.t_cursor;
3 begin
4 pkg_nc_getdata.getncinventory('1047V610000000000G7O','0001V6100000000R1V7X,0001V6100000000SYZUR,0001V6100000000SFB12,0001V6100000000SDYW3,0001V6100000000M6EST,0001V6100000000R9A3T',cur_calling);
5 end;
6 /
declare
*
ERROR at line 1:
ORA-00907: missing right parenthesis
ORA-06512: at "YQ.PKG_NC_GETDATA", line 645
ORA-06512: at line 4
Elapsed: 00:00:00.18
包头里定义了游标的数据类型。
CREATE OR REPLACE PACKAGE PKG_NC_GETDATA is
TYPE T_CURSOR IS REF CURSOR;
包体里的过程
procedure getNCInventory(v_pk_salestru in varchar2, --销售组织主键
v_pk_invbasdoc in varchar2, --产品主键,如果有多个产品用逗号分开
results out T_CURSOR) is
strSql long(15000);
--strSql2 long(5000);
v_int number := 1;
--v_pkinv PKG_NC_GETDATA.pkinvbasdocArray;
begin
--DBMS_REFRESH.REFRESH('TYATP');
execute immediate 'truncate table TMP_PK_INVBASDOC_INFO';
loop
exit when regexp_substr(v_pk_invbasdoc,'[^,]+',1,v_int) is null;
insert into TMP_PK_INVBASDOC_INFO values (replace(regexp_substr(v_pk_invbasdoc,'[^,]+',1,v_int),'''','')) ;
v_int := v_int +1;
end loop;
commit;
strSql :='select
' ||v_pk_salestru|| ',
b.pk_calbody,
b.pk_invbasdoc,
nvl(ccl_num, 0) invnum, --现存量
/*nvl(b.ccl_num, 0) - nvl(a.nonsonum, 0) - nvl(a.nonreceiptnum, 0) +
nvl(nonponum, 0) + nvl(ntraninnum, 0) - nvl(ntranoutnum, 0) -
nvl(npickmnum, 0), --可用量*/
(nvl(nonponum,0)+nvl(ntraninnum,0)) waynum, --在途数量
(nvl(b.ccl_num, 0) - nvl(a.nonsonum, 0) - nvl(a.nonreceiptnum, 0) -
nvl(ntranoutnum, 0) - nvl(npickmnum, 0)) salenum --可销售数量
from (SELECT ic_atp.ccalbodyid,
bd_invbasdoc.pk_invbasdoc,
sum(nvl(nonponum, 0)) AS nonponum, --订单在途
sum(nvl(nonsonum, 0)) AS nonsonum, --销售订单承诺量
sum(nvl(nonreceiptnum, 0)) AS nonreceiptnum, --待发货单
sum(nvl(nrsvnum1, 0)) AS ntraninnum, --调拨在途,
sum(nvl(nrsvnum2, 0)) as ntranoutnum, --调拨单代转出量
sum(nvl(npickmnum, 0)) as npickmnum --备货计划量
from ic_atp
left join bd_stordoc on ic_atp.cwarehouseid =
bd_stordoc.pk_stordoc
INNER JOIN bd_invmandoc ON ic_atp.cinventoryid =
bd_invmandoc.pk_invmandoc
INNER JOIN bd_invbasdoc ON bd_invmandoc.pk_invbasdoc =
bd_invbasdoc.pk_invbasdoc
where isatpaffected = ''Y''
and ccalbodyid in
(select pk_calbody
from T_SALESTRU_CALBODY
where pk_salestru = ' ||v_pk_salestru|| ')
and cwarehouseid in (select pk_stordoc
from T_CALBODY_STORDOC
where pk_calbody in
(select pk_calbody
from T_SALESTRU_CALBODY
where pk_salestru = ' ||v_pk_salestru|| ')
and isuse = ''0'' )
and bd_invbasdoc.pk_invbasdoc in (select PKINVBASDOC from TMP_PK_INVBASDOC_INFO )
group by ic_atp.ccalbodyid , bd_invbasdoc.pk_invbasdoc
) a,
(select stor.pk_calbody ,bas.pk_invbasdoc,
sum(icin2.num) ccl_num --现存量
from icin2
inner join bd_stordoc stor on stor.pk_stordoc =
icin2.cwarehouseid
inner join bd_invmandoc man on man.pk_invmandoc =
icin2.cinventoryid
inner join bd_invbasdoc bas on bas.pk_invbasdoc =
man.pk_invbasdoc
where stor.pk_calbody in
(select pk_calbody
from T_SALESTRU_CALBODY
where pk_salestru = ' ||v_pk_salestru|| ')
and icin2.cwarehouseid in
(select pk_stordoc
from T_CALBODY_STORDOC
where pk_calbody in
(select pk_calbody
from T_SALESTRU_CALBODY
where pk_salestru = ' ||v_pk_salestru|| ')
and isuse = ''0'')
and bas.pk_invbasdoc in (select PKINVBASDOC from TMP_PK_INVBASDOC_INFO )
group by stor.pk_calbody ,bas.pk_invbasdoc
) b
where a.ccalbodyid (+) = b.pk_calbody
and a.pk_invbasdoc (+)= b.pk_invbasdoc and nvl(ccl_num, 0) <> 0 ';
open results for strSql;
/* insert into tes_sql (testsql,username,createdate) values ((strSql),'liu-jh',sysdate);
commit;*/
end;
请教,在SQLPLUS里怎么调用返回游标值的过程?
oracle存储返回游标,如何接收存储过程返回的游标相关推荐
- mysql存储过程游标嵌套_MYSQL存储过程中使用游标嵌套的实例
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. delimiter $$ drop procedure if exists findErr ...
- C#获取存储过程返回值和输出参数值的方法
//转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...
- java 存储过程 数组_Java调用存储过程返回数组
Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMB ...
- 获取存储过程返回值及代码中获取返回值
获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...
- 获取存储过程返回值及代码中获取返回值(转)
获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...
- Java调用存储过程返回数组
Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMB ...
- oracle存储过程rowcount用法,Oracle带输入、输出参数的存储过程回来受影响的行数SQL%ROWCOUNT...
当前位置:我的异常网» SQL » Oracle带输入.输出参数的存储过程回来受影响的行数 Oracle带输入.输出参数的存储过程回来受影响的行数SQL%ROWCOUNT www.myexceptio ...
- Oracle存储过程返回游标实例详解
复制代码 代码如下: CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT VARCHAR2, P_SUB VARCHAR2, P_SENDOR VARCHA ...
- 用.NET调用oracle的存储过程返回记录集
最近做一个项目,为了提高数据库安全性,客户要求所有数据库操作都要放在存储过程.象一般的更新操作,返回一个值的,都比较容易实现.而要想返回记录集就比较麻烦,我在网上搜了一下,这方面的文章并不多.在此总结 ...
最新文章
- 什么样的技术将在后大流行的世界里兴起
- php获取函数里参数吗,php函数中获取参数信息方法(记录)
- 【杂谈】裸辞一年后,分享一下我的心态
- oracle11g 查看磁盘,oracle11g 磁盘
- python Logging日志记录模块详解
- 插入始终是1_C++入门篇(四十四),链表查询与结点插入
- DFS应用——遍历有向图+判断有向图是否有圈
- APNIC IP 库
- java执行sql列名无效_嵌套异常是java.sql.SQLException:无效的列名ORACLE
- 详解Nacos的高可用特性(转载)
- ASP.NET服务器控件查询
- linux安装命令自动运行y,centos7linux 安装jdk ,Tomcat加配置加自动启动。等命令
- 权限汇总 uses-permission
- OpenCV如何提取人眼区域的眼球位置
- validate.js的使用
- 药一点门诊收费管理系统
- C语言知识点总结2022
- android获取当前位置的GPS经纬度
- matlab imagesc jet,matlab imagesc
- php mysql stmt_PHP mysqli_stmt_init() 函数 | 菜鸟教程
热门文章
- Winform3、事件触发机制学习:事件的注册和定义和参数含义
- 如何进行特征选择 实践
- Windows下安装python3---pip-setuptools-matplotlib-tkinter
- 海尔微型计算机机箱如何拆解,想问海尔全自动洗衣机箱体怎么拆卸?
- 播放量超2000w,这些高能恰饭视频为什么能被B站用户“反复观看”?
- [STM32]PID恒温加热台(DIY回流焊)
- Lua:lua调用C++
- Mac如何找到文件的绝对路径
- Python小白的数学建模课-B6. 新冠疫情 SEIR 改进模型
- 到银联的调试过程,总结,记录