create or replace procedure gzrz_count is
c varchar2(1000);
d number;
begin
select zzjgdm,count(id) into c,d from gzrz group by zzjgdm;
end gzrz_count;ORA-01422: 实际返回的行数超出请求的行数
ORA-06512: 在"BZGL.GZRZ_COUNT", line 5
ORA-06512: 在line 1
c varchar2(1000);
d number;
begin
select zzjgdm,count(id) into c,d from gzrz group by zzjgdm;
end gzrz_count;ORA-01422: 实际返回的行数超出请求的行数
ORA-06512: 在"BZGL.GZRZ_COUNT", line 5
ORA-06512: 在line 1
解决方案 »
- oracle 11g 插入数据,查询数据很慢,该如何查看,在线等。
- 请用2种不同的sql写法,统计出所有部门下的员工人数,若某部门下不存在员工,则统计显示为0.显示结果为: 部门编号、员工人数
- sql子查询问题,求大神解答
- 创建存储过程时有警告信息,请问如何看具体的信息
- 表合并问题
- pl/sql问题求助
- Oracle中的trigger
- 这样的语法,ORACLE不支持 ????
- 前辈门我安装了ORACLE8.16了但有几个小问题,请指教
- oracle中,表A中共有a,b,c三个字段,c初始为0,只要a或b发生改变,那么c值变为1
- 建了一张时间表time,有年、年描述、月、月描述、日、日描述等,怎么将系统时间初始化进去,比如说20100101到20121231这段时间,用pl/sql实现。
- sql 求当月
单行结果可以用into接收,在多行结果时需要使用cursorr_cur sys_refcursor;
begin
open r_cur for select zzjgdm,count(id) from gzrz group by zzjgdm;
变量c,d都只能用来存储内存中的一个值,而你的select语句返回多行,所以oracle不清楚该将那个结果赋给你的变量。
你必须保证select返回且只返回一行create or replace procedure gzrz_count is
c varchar2(1000);
d number;
begin
select zzjgdm,count(id) into c,d from gzrz group by zzjgdm】
where rownum =1;
exception
when others then --如果select语句返回0行,也会出错
select 'zzjgdm','count' into c,d from dual;
end gzrz_count;
create or replace procedure gzrz_count is
r_cur sys_refcursor;
begin
open r_cur for select zzjgdm,count(id) from gzrz group by zzjgdm;
end gzrz_count;用c#的sqldatasource调用时出现错误<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SCGL %>"
ProviderName="<%$ ConnectionStrings:SCGL.ProviderName %>"
SelectCommand="GZRZ_COUNT" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>system.data.oracleclient提供程序不支持为存储过程派生参数
CREATE OR REPLACE PROCEDURE gzrz_count(o OUT SYS_REFCURSOR) IS
c VARCHAR2(1000);
d NUMBER;
BEGIN
OPEN o FOR
SELECT zzjgdm, COUNT(id) cnt FROM gzrz GROUP BY zzjgdm;
END gzrz_count;--返回多个参数值(只能一行)
CREATE OR REPLACE PROCEDURE gzrz_count(c OUT VARCHAR2, d OUT NUMBER) IS
BEGIN
SELECT zzjgdm, COUNT(id) INTO c, d FROM gzrz GROUP BY zzjgdm WHERE rownum < 2;
END gzrz_count;