麻烦高手们看看这段代码有没有语法错误!

fihuang 2009-05-04 01:39:02
麻烦高手们看看这段代码有没有语法错误!
大家看看我的这个存储过程。表HAOBAI是个空表,为什么执行这个存储过程后,表HAOBAI里只插入了一条数据呢?
大家看看语法对不对,有没有死循环或者别的语法错误?

CREATE OR REPLACE PROCEDURE STORE_WIKI AS
DECLARE
question varchar(100);
answer varchar(1000);
url varchar(1000);
question_sum number;
cursor cur is SELECT WIKI_EXPLANATION.TITLE,WIKI_EXPLANATION.EXPLANATION,WIKI_EXPLANATION.URL
FROM WIKI_EXPLANATION
WHERE WIKI_EXPLANATION.URL NOT IN (SELECT URL FROM HAOBAI);
begin
open cur;
fetch cur into question,answer,url;
while cur %found loop
select count(*) into question_sum from HAOBAI where HAOBAI.QUESTION = question;
if question_sum = 0
then
INSERT
INTO HAOBAI
VALUES(question,answer,url);
end if;
commit;
fetch cur into question,answer,url;
end loop;
close cur;
end;
下面这句sql语句读出来的数据有很多条,绝对不止一条。
SELECT WIKI_EXPLANATION.TITLE,WIKI_EXPLANATION.EXPLANATION,WIKI_EXPLANATION.URL
FROM WIKI_EXPLANATION
WHERE WIKI_EXPLANATION.URL NOT IN (SELECT URL FROM HAOBAI);
...全文
229 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_moon 2009-05-06
  • 打赏
  • 举报
回复
学习了
以前我们在设计表结构时,字段都是以f_开头的,所有变量都是以v_开头的
这个还真没有注意到变量名和字段名不能相同
呵呵呵,真是学习了啊
moqingcn 2009-05-06
  • 打赏
  • 举报
回复
UP 一楼
JS_Beginner 2009-05-06
  • 打赏
  • 举报
回复
同意一楼
phoenixtcyuan 2009-05-06
  • 打赏
  • 举报
回复
经验丰富如1楼大牛的人不多,快给他分吧。
wangsong145 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 fihuang 的帖子:]
麻烦高手们看看这段代码有没有语法错误!
大家看看我的这个存储过程。表HAOBAI是个空表,为什么执行这个存储过程后,表HAOBAI里只插入了一条数据呢?
大家看看语法对不对,有没有死循环或者别的语法错误?

SQL code
CREATE OR REPLACE PROCEDURE STORE_WIKI AS
DECLARE
question varchar(100);
answer varchar(1000);
url varchar(1000);
question_sum number;
cursor cur is SELECT WIKI_EXPLANATION.TITL…
[/Quote]
如果变量名字和字段名相同的话那这个条件就永远成立了啊,类似于1=1
Angly1018 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fosjos 的回复:]
楼主犯了一个大忌:变量名和字段名相同,一般都加个前缀,比如p_ m_
select count(*) into question_sum from HAOBAI where HAOBAI.QUESTION = question
最后这个question优先指向表记录的字段,所以条件永远为真
[/Quote]
正解
不过变量一般都加前缀v_,如:v_question
fihuang 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fosjos 的回复:]
楼主犯了一个大忌:变量名和字段名相同,一般都加个前缀,比如p_ m_
select count(*) into question_sum from HAOBAI where HAOBAI.QUESTION = question
最后这个question优先指向表记录的字段,所以条件永远为真
[/Quote]华佗在世 接分吧
fosjos 2009-05-04
  • 打赏
  • 举报
回复
楼主犯了一个大忌:变量名和字段名相同,一般都加个前缀,比如p_ m_
select count(*) into question_sum from HAOBAI where HAOBAI.QUESTION = question
最后这个question优先指向表记录的字段,所以条件永远为真

17,377

社区成员

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

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