救命啊,涵数中的COUNT执行问题!

aquaqu2009 大飞科技 技术经理  2014-03-18 09:49:15


CREATE OR REPLACE FUNCTION test(aquid INT,aquname VARCHAR2,aqubz VARCHAR2) RETURN INT
IS
re int;
BEGIN
SELECT COUNT(1) into re FROM aqu WHERE aquid=aquid;

RETURN re;
END;

aqu表中有数据3768条!
当我执行 select id,name,test(id,name,bz) total from killAqu where name='比比三九';
时结果为3768条,正确数应该为81条才对!
这是哪写错了,迷茫呃!
换成:
execute immediate strsql into re;
这要瓣写法就能返回正确数据!救救我这个菜鸟吧,大大们!
...全文
103 点赞 收藏 7
写回复
7 条回复
我是楼主请来的DB 2014年03月20日
马了个克的。
回复 点赞
善若止水 2014年03月19日
引用 3 楼 sych888 的回复:
SELECT COUNT(1) into re FROM aqu WHERE aquid=aquid; 参数名最好不要和列名一样,容易出问题
很是支持,以前我就遇到过这样的情况。
回复 点赞
fan206 2014年03月18日
帮顶,等大牛解决
回复 点赞
流浪川 2014年03月18日
引用 3 楼 sych888 的回复:
SELECT COUNT(1) into re FROM aqu WHERE aquid=aquid; 参数名最好不要和列名一样,容易出问题
正解,变量名不要与字段用相同的名字。。
回复 点赞
sych888 2014年03月18日
SELECT COUNT(1) into re FROM aqu WHERE aquid=aquid; 参数名最好不要和列名一样,容易出问题
回复 点赞
流浪川 2014年03月18日
引用 楼主 aquaqu2009 的回复:

CREATE OR REPLACE FUNCTION test(aquid INT,aquname VARCHAR2,aqubz VARCHAR2) RETURN INT 
IS
    re int;
BEGIN
SELECT COUNT(1) into re FROM aqu  WHERE aquid=aquid;

RETURN re;
END;
aqu表中有数据3768条! 当我执行 select id,name,test(id,name,bz) total from killAqu where name='比比三九'; 时结果为3768条,正确数应该为81条才对! 这是哪写错了,迷茫呃! 换成: execute immediate strsql into re; 这要瓣写法就能返回正确数据!救救我这个菜鸟吧,大大们!
select id,name,test(id,name,bz) total from killAqu where name='比比三九' AND EXISTS(
 SELECT 1 FROM aqu WHERE squ.aquid=killAqu.ID)
外面需要增加过滤条件。。
回复 点赞
CT_LXL 2014年03月18日
引用 楼主 aquaqu2009 的回复:

CREATE OR REPLACE FUNCTION test(aquid INT,aquname VARCHAR2,aqubz VARCHAR2) RETURN INT 
IS
    re int;
BEGIN
SELECT COUNT(1) into re FROM aqu  WHERE aquid=aquid;

RETURN re;
END;
aqu表中有数据3768条! 当我执行 select id,name,test(id,name,bz) total from killAqu where name='比比三九'; 时结果为3768条,正确数应该为81条才对! 这是哪写错了,迷茫呃! 换成: execute immediate strsql into re; 这要瓣写法就能返回正确数据!救救我这个菜鸟吧,大大们!
select id,name,test(id,name,bz) total from killAqu where name='比比三九' 返回的是killAqu中的数据啊,和test没关系啊,TEST每次都固定返回一条数据啊
回复 点赞
发动态
发帖子
基础和管理
创建于2007-09-28

7175

社区成员

9.5w+

社区内容

Oracle 基础和管理
社区公告
暂无公告