Oracle---DBMS_SQL----动态SQL语句
来源:互联网 发布:淘宝卖手办的店 编辑:程序博客网 时间:2024/05/21 17:05
在某些场合下, 存储过程或触发器里的SQL语句需要动态生成, Oracle的DBMS_SQL包可以用来执行动态SQL语句
DECLARE
v_cursor NUMBER;
v_stat NUMBER;
v_row NUMBER;
v_id NUMBER;
v_no VARCHAR(100);
v_date DATE;
v_sql VARCHAR(200);
s_id NUMBER;
s_date DATE;
BEGIN
s_id := 3000;
s_date := SYSDATE;
v_sql := 'SELECT id,qan_no,sample_date FROM "tblno" WHERE id > :sid and sample_date < :sdate';
v_cursor := dbms_sql.open_cursor; --打开游标;
dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); --解析动态SQL语句;
dbms_sql.bind_variable(v_cursor, ':sid', s_id); --绑定输入参数;
dbms_sql.bind_variable(v_cursor, ':sdate', s_date);
dbms_sql.define_column(v_cursor, 1, v_id); --定义列
dbms_sql.define_column(v_cursor, 2, v_no, 100);
dbms_sql.define_column(v_cursor, 3, v_date);
v_stat := dbms_sql.execute(v_cursor); --执行动态SQL语句。
LOOP
EXIT WHEN dbms_sql.fetch_rows(v_cursor)<=0; --fetch_rows在结果集中移动游标,如果未抵达末尾,返回1。
dbms_sql.column_value(v_cursor, 1, v_id); --将当前行的查询结果写入上面定义的列中。
dbms_sql.column_value(v_cursor, 2, v_no);
dbms_sql.column_value(v_cursor, 3, v_date);
dbms_output.put_line(v_id || ';' || v_no || ';' || v_date);
END LOOP;
dbms_sql.close_cursor(v_cursor); --关闭游标。
END;
- Oracle---DBMS_SQL----动态SQL语句
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- oracle 使用DBMS_SQL包动态执行sql
- DBMS_SQL包实现动态SQL
- oracle 存储过程,导出sql到文本,动态sql,dbms_sql使用
- Oracle动态SQL语句
- oracle 动态SQL语句
- Oracle动态SQL语句
- Oracle动态SQL语句
- Oracle 动态SQL语句
- ORACLE动态SQL语句
- 动态sql(dbms_sql包的使用)
- 使用DBMS_SQL包动态执行sql
- 写得蛮好的linux学习笔记
- Quartus II 7.2 study_note_1.0
- 利用java JDBC解析excel文档
- 2年了吗
- objdump代码分析
- Oracle---DBMS_SQL----动态SQL语句
- 我还是一个人.....
- 将指定的表/视图中的数据导出为 html 文件
- 同济大学软件学院万院长谈择业
- 内存地址对齐及大小端
- 非常显然:各正整数不可与各非0整数一 一对应
- c/c++ 资源
- JAVA去掉一个已排序数组的重复数字
- 微软把用户变成了傻瓜,却指责傻瓜不聪明