dbms_sql包例子

这个专门的方法用内部用了 dbms_sql包来实现insert 语句的操作。这样避免连接字符等麻烦。充分利用oracle 的特性.方便维护。

下面是我用dbms_sql 做更新和查询的试验示例。

 declare
v_cursor number; --定义光标
v_string varchar2(2999);
v_row number;
begin
v_cursor:=dbms_sql.open_cursor;--打开处理光标
v_string := 'update ywyinfo set ywy=ywy where ywy=:name';--操作语句,其中:name是语句运行时才确定值的变量
dbms_sql.parse(v_cursor,v_string,dbms_sql.native);--解释语句
dbms_sql.bind_variable(v_cursor,':name','陆冠良');  --给变量赋值
v_row := dbms_sql.execute(v_cursor);--执行语句
dbms_sql.close_cursor(v_cursor);--关闭游标
dbms_output.put_line(v_row);
exception
when others then
dbms_sql.close_cursor(v_cursor); --关闭光标
raise;
end;
--查询
DECLARE
v_cursor NUMBER;
v_stat NUMBER;
v_row NUMBER;
v_sql VARCHAR(200);
yId number;
yName varchar2(100);
BEGIN
v_sql := 'SELECT * FROM ywyinfo WHERE ywy = :name';

v_cursor := dbms_sql.open_cursor; --打开游标;

dbms_sql.parse(v_cursor, v_sql, dbms_sql.native); --解析动态SQL语句;
dbms_sql.bind_variable(v_cursor, ':name', '陈翠兰'); --绑定输入参数;

dbms_sql.define_column(v_cursor, 1, yId); --定义列
dbms_sql.define_column(v_cursor, 2, yName, 100);

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, yId); --将当前行的查询结果写入上面定义的列中。 dbms_sql.column_value(v_cursor, 2, v_no);
dbms_sql.column_value(v_cursor, 2, yName);
dbms_output.put_line(yId || ';' || yName);
END LOOP;
dbms_sql.close_cursor(v_cursor); --关闭游标。
END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值