oracle - 尝试创建 proc 但出现错误
问题描述
我正在尝试创建一个返回连接值但出现错误的过程。
我创建了一个过程名称“GetMultiVal”,并在其中创建了一个游标“stage_val”用于获取值。
CREATE OR REPLACE PROCEDURE GetMultiVal
(v_var_value out varchar2,v_hr_stk_out out Sys_Refcursor)
is
var_value varchar2(200);
x varchar2 (200);
cursor age_val is
SELECT AGE_CD,
decode(AGE_CD,'07','CLNE(RW','05','CS ','4A',NULL,AGE_DESC) AGE_DESC ,
AGE_SEQ
FROM DBPROD.PROD_AGE_MST
WHERE AGE_SEQ < 15
AND AGE_CD NOT IN ('6A','05')
ORDER BY 3;
BEGIN
OPEN v_hr_stk_out For
FOR i IN age_val LOOP
SELECT To_Char(Round(NVL(SUM(NVL(ROD_WT, 0)), 0), 0))
INTO X
FROM DBPROD.Prod_age_fgs_cur
WHERE WF_DATE BETWEEN sysdate AND sysdate+1
AND WF_AGE_CD=i.AGE_CD;
var_value :=var_value || X||'~';
END LOOP;
select var_value as v_var_value from dual;
end;
end;
预期:应该在 v_var_value 变量中获得连接值。
实际:收到错误 PROCEDURE DBPROD.GETMULTIVAL 的编译错误
错误:PLS-00103:在预期以下情况之一时遇到符号“FOR”:
解决方案
you don't Need to open a Cursor if you use it in a for Loop.
try this one:
CREATE OR REPLACE PROCEDURE getmultival(v_var_value out varchar2
,v_hr_stk_out out Sys_Refcursor) is
var_value varchar2(200);
x varchar2(200);
cursor age_val is
SELECT age_cd
,decode(age_cd, '07', 'CLNE(RW', '05', 'CS ', '4A', NULL, age_desc) age_desc
,age_seq
FROM dbprod.prod_age_mst
WHERE age_seq < 15
AND age_cd NOT IN ('6A', '05')
ORDER BY 3;
BEGIN
open v_hr_stk_out for
SELECT age_cd
,decode(age_cd, '07', 'CLNE(RW', '05', 'CS ', '4A', NULL, age_desc) age_desc
,age_seq
FROM dbprod.prod_age_mst
WHERE age_seq < 15
AND age_cd NOT IN ('6A', '05')
ORDER BY 3;
FOR i IN age_val LOOP
SELECT to_char(round(nvl(SUM(nvl(rod_wt, 0)), 0), 0))
INTO x
FROM dbprod.prod_age_fgs_cur
WHERE wf_date BETWEEN sysdate AND sysdate + 1
AND wf_age_cd = i.age_cd;
var_value := var_value || x || '~';
END LOOP;
v_var_value := var_value ;
end;
推荐阅读
- jboss-arquillian - 远程容器中的 Arquillian + ear + wildfly = NoSuchMethodError
- json - 如何将 PHP 数组转换为 JSON 数组?
- java - Java中的排列不使用数组
- php - 在 Wordpress 网站上制作自定义搜索表单
- apache-spark - 使用选项 kafka.bootstrap.servers 不使用来自 spark-streaming-kafka-0-10 的消息
- javascript - 如何在 Javascript 或 Apex 中检查受限文件
- python - 来自“(行,列,值)”列表的数据框?
- javascript - 将 RGB/RGBA 转换为十六进制使 rgba 的不透明度不被忽略?
- javascript - 获取第二个选择框的值以获取结果
- python-3.x - 使用 tkinter 时出现名称错误