Oracle存储过程使用动态SQL获得Cursor

buaawjh 2006-08-25 01:45:14
CREATE OR REPLACE PACKAGE PKG_AAA
AS
TYPE CUR_FLIGHT IS REF CURSOR;

PROCEDURE UP_AAA(PSRLN_LIST varchar2,PLOGCODE varchar2,pdesp varchar2);
END PKG_AAA;
/

CREATE OR REPLACE PACKAGE BODY PKG_AAA
AS
procedure UP_AAA
(
PSRLN_LIST VARCHAR2,
PLOGCODE VARCHAR2,
PDESP VARCHAR2
)
is
v_log_id varchar2(20); --Log唯一标号
sqlstr varchar2(2000); --sql语句
cur_model CUR_FLIGHT;----------??????????????
begin
sqlstr:='select * from aaa where srln in ('||PSRLN_LIST||')';
open cur_model for sqlstr;-------???????????
For r_model in cur_model Loop
select SQ_LOG.NEXTVAL into v_log_id from dual;
Insert Into t_log_flight(...)
values(...);
End Loop;
Commit;
end UP_AAA;
END PKG_AAA;
/

请问错在哪里
...全文
312 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2006-08-25
  • 打赏
  • 举报
回复
多了个A


CREATE OR REPLACE PACKAGE BODY PKG_AAA
AS
procedure UP_AAA
(
PSRLN_LIST VARCHAR2,
PLOGCODE VARCHAR2,
PDESP VARCHAR2
)
is
v_log_id varchar2(20);
sqlstr varchar2(2000);
cur_model CUR_FLIGHT;
v_row aaa%rowtype;
begin
sqlstr:='select * from aaa where srln in ('||PSRLN_LIST||')';
open cur_model for sqlstr;
Loop
fetch cur_model into v_row;
exit when cur_model%notfound;
select SQ_LOG.NEXTVAL into v_log_id from dual;
Insert Into t_log_flight(...)
values(...);
End Loop;
Commit;
close cur_model;
end UP_AAA;
END PKG_AAA;
vivianfdlpw 2006-08-25
  • 打赏
  • 举报
回复

CREATE OR REPLACE PACKAGE BODY PKG_AAA
AS
procedure UP_AAA
(
PSRLN_LIST VARCHAR2,
PLOGCODE VARCHAR2,
PDESP VARCHAR2
)
is
v_log_id varchar2(20);
sqlstr varchar2(2000);
cur_model CUR_FLIGHT;
v_row aaaA%rowtype;
begin
sqlstr:='select * from aaa where srln in ('||PSRLN_LIST||')';
open cur_model for sqlstr;
Loop
fetch cur_model into v_row;
exit when cur_model%notfound;
select SQ_LOG.NEXTVAL into v_log_id from dual;
Insert Into t_log_flight(...)
values(...);
End Loop;
Commit;
close cur_model;
end UP_AAA;
END PKG_AAA;
wxmaizi 2006-08-25
  • 打赏
  • 举报
回复
你把sqlstr print出来看看,是不是你想要的sql
wxmaizi 2006-08-25
  • 打赏
  • 举报
回复
注意引号问题
vivianfdlpw 2006-08-25
  • 打赏
  • 举报
回复
你是想取值还是想insert数据?
相当不错的技术文档。 前言 1 第一章 oracle存储过程概述 2 1.1 存储过程基本结构(PROCEDURE) 3 1.1.1创建存储过程 3 1.1.2 存储过程删除 5 1.1.3 调用存储过程 5 1.2存储函数(FUNCTIONE) 6 1.2.1 创建存储函数 6 1.2.2 删除存储函数 7 1.3 包(package) 7 1.3.1 包的基本结构 7 1.3.2 包的创建 7 1.3.3 调用包中元素 9 1.3.4 包的修改和删除 9 第二章 oracle存储过程基础――PL/SQL 9 2.1 pl/sql基础 9 2.1.1 PL/SQL简介 9 2.1.2 一个简单的PL/SQL块 10 2.1.3 PL/SQL流程控制 13 2.2 游标(CURSOR) 17 2.2.1 游标的概念 18 2.2.2 游标的属性 18 2.2.3 游标中FOR循环的使用 20 2.2.4 带参数游标的使用方法 20 2.3 动态SQL语句 21 2.4 例外处理 22 2.5 一个完整的PL/SQL实例 24 第三章 oracle存储过程讨论 25 3.1 函数(FUNCTION) 26 3.1.1 用户函数创建,编译,删除 26 3.1.2 参数传递 27 3.2 存储过程 28 3.3 包 29 3.3.1 创建包 30 3.3.2 删除包 30 3.3.3 应用举例 31 3.4 UTL_FILE包的使用 33 3.4.1 文件控制: 34 3.4.2 文件输出: 34 3.4.3 文件输入: 35 3.4.4 应用举例 35 4.1 Wrapper应用 35 第四章 存储过程运行环境 36 4.1 存储过程以及PL/SQL执行环境 36 4.1.1 SQL*PLUS环境 36 4.1.2 Pro*c预编译环境 37 4.2 存储过程调试方法 38 4.2.1 SQL*PLUS环境中显示错误 38 4.2.2 插入测试表调试存储过程 38 4.2.3 DBMS_OUTPUT系统内置包 39 附录一 sql*plus工具 40 附录1.1 sql*plus启动和关闭 41 附录1.2 sql*plus 环境设置 42 附录1.3 设置环境参数 42 附录1.4 sqlplus命令的执行 43 附录1.5 sql*plus编辑命令 43

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧