在oracle执行存储过程出现: 在此select语句中缺少into子句

count1:=0;selectcount(*)intocount1fromcheckTmp;if(count1=0)thenbegininsertintocheckTm... count1:=0;
select count(*) into count1 from checkTmp;
if(count1=0) then
begin
insert into checkTmp(instanceID,DID,expressID) values ('00000000-0000-0000-0000-000000000000',0,0);
end;
end if;

select * from checkTmp order by expressID;
主要是这个查询语句
展开
 我来答
253654522
2014-04-02 · TA获得超过138个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:181万
展开全部
oracle的存储过程中不能直接select,必须要将结带碰消果放到变吵猛量中,即类似select count(*) into count1 from checkTmp这种写法。

直接写成select * from checkTmp order by expressID肯定会报错的,因为oracle不知蠢知道你要select干什么。
追问
select * from checkTmp order by expressID;我要的是把这个checkTmp表按照排序查出来,是有多个值,应该不可以用一个变量接收吧select   count(*) into count1 from  checkTmp order by expressID;你这样不是查询有多小数据了吗??
追答
oracle里的存储过程不能直接返回查询结果,如果你想将查询结果返回到前台,可以使用游标。select into的用法只能返回一条数据,无数据或者多数据的时候都会报错。
野令02f
2014-04-02
知道答主
回答量:12
采纳率:0%
帮助的人:11.3万
展开全部
最后面那句也衫镇得加上INTO,得把查询出来的结果放到变模伏量里。旦塌携
select 1 INTO XXX from checkTmp order by expressID;
追问
select * from checkTmp order by expressID;这是要查询多条语句的,怎么赋值into,求详细一点
追答
ORACLE 存储过程 SELECT  1 INTO AA FROM DUAL 只能返回一条数据,多个字段。
要查询多条语句可以用游标,
~~~例子~~~

FOR A1 IN (select * from checkTmp order by expressID)
LOOP
--判断各种条件
begin
这里你可以把查询结果增删改
insert 了delete 了等等
end;
END LOOP;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
发财财富来2
推荐于2017-11-29 · TA获得超过125个赞
知道答主
回答量:121
采纳率:100%
帮助的人:47万
展开全部
这个看一下对你是否有帮助啊。查吵败询枝乱多行内容用游标啊猛碰档
declare
cursor mycur is
select * from checkTmp order by expressID;
myrecord checkTmp%ROWTYPE;
BEGIN
OPEN mycur;
FETCH mycur INTO myrecord;
WHILE mycur%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(myrecord.instanceID||','||myrecord.DID||,myrecord.expressID);
END LOOP;
CLOSE mycur;
END;
/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式