问两个关于proc的问题

hzieeno1 2007-01-19 09:44:37
1.我想问一下在EXEC SQL update ……之后,怎么取得这个语句在执行后被数据库被更新的记录数?
2.select aa into :c from table1 where b=1, 如果这里aa是一个变量,代表具体的字段名,怎么写EXEC SQL语句?
...全文
371 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Paladin_china 2007-01-19
  • 打赏
  • 举报
回复
第二个问题他是指烈名是动态的吧?
那样用动态sql
baojianjun 2007-01-19
  • 打赏
  • 举报
回复
如冰所说
icedut 2007-01-19
  • 打赏
  • 举报
回复
2.select aa into :c from table1 where b=1, 如果这里aa是一个变量,代表具体的字段名,怎么写EXEC SQL语句?


declare 变量C 变量类型;
begin
select aa into 变量C from table1 where b=1;
end;

--这样就可以了
icedut 2007-01-19
  • 打赏
  • 举报
回复
1.我想问一下在EXEC SQL update ……之后,怎么取得这个语句在执行后被数据库被更新的记录数?


SQL%ROWCOUNT 记录的影响行数

---
EXECUTE IMMEDIATE v_sql;

IF SQL%ROWCOUNT = 0 --当记录数为0时。。。。
THEN
...
END IF;
adam0730 2007-01-19
  • 打赏
  • 举报
回复
第一个你用一个count就好了吧,你update的时候肯定有个where的,你在update 之前count一下where就可以了
qiyousyc 2007-01-19
  • 打赏
  • 举报
回复
1、SQL%ROWCOUNT
2、先声明变量declare
yanran_hill 2007-01-19
  • 打赏
  • 举报
回复
第一个问题,查看
sqlca.sqlerrd[2]
第二个问题,使用动态SQL语句,比如prepare语句
查看例子代码
sprintf(dynstmt.arr,
"select %s into :c from table1 where b=1",aa);
dynstmt.len = (unsigned short)strlen((char *)dynstmt.arr);
EXEC SQL PREPARE S FROM :dynstmt;
EXEC SQL DECLARE C CURSOR FOR S;
EXEC SQL OPEN C ;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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