Sql 光标练习不起作用
你知道为什么这段代码在Sql Server中不起作用吗Sql 光标练习不起作用,sql,sql-server-2008,cursor,Sql,Sql Server 2008,Cursor,你知道为什么这段代码在Sql Server中不起作用吗 CREATE PROCEDURE sum_salaries(OUT sum INTEGER) LANGUAGE SQL BEGIN DECLARE p_sum INTEGER; DECLARE p_sal INTEGER; DECLARE c CURSOR FOR SELECT SALARY FROM EMPLOYEE; DECLARE SQLSTATE CHAR(5) DEFAULT '00000
CREATE PROCEDURE sum_salaries(OUT sum INTEGER)
LANGUAGE SQL
BEGIN
DECLARE p_sum INTEGER;
DECLARE p_sal INTEGER;
DECLARE c CURSOR FOR SELECT SALARY FROM EMPLOYEE;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
SET p_sum = 0;
OPEN c;
FETCH FROM c INTO p_sal;
WHILE(SQLSTATE = '00000') DO
SET p_sum = p_sum + p_sal;
FETCH FROM c INTO p_sal;
END WHILE;
CLOSE c;
SET sum = p_sum;
END%
它给出了各种各样的错误:
Msg 102,15级,状态1,程序汇总工资,第3行不正确
“OUT”附近的语法。Msg 155,第15级,状态2,程序汇总工资,
第6行“整数”不是可识别的游标选项。味精155,第15级,
状态2,过程总和,第7行“整数”未被识别
光标选项。Msg 155,第15级,状态2,程序汇总工资,
第9行“CHAR”不是可识别的游标选项。味精102,第15级,
状态1,程序汇总,第15行,语法不正确
“p_sal”。Msg 102,15级,状态1,程序汇总工资,第17行
“DO”附近的语法不正确。Msg 102,15级,状态1,程序
工资总额,第19行“p_sal”附近的语法不正确。味精102,水平
15,状态1,程序汇总,第24行,语法不正确
“=”
或者,如果你能给我指一篇教使用游标的文章/网站,那也太好了。此示例取自:
提前非常感谢 这样做不需要光标
create procedure sum_salaries
(
@sum int output
)
as
begin
select @sum = sum(salary) from employee
end
但如果您想使用游标,请尝试
create procedure sum_salaries
(
@sum int output
)
as
begin
declare @p_sum int, @p_sal int
declare c cursor for
select salary from employee
set @p_sum = 0
open c
fetch from c into @p_sal
while @@fetch_status = 0
begin
set @p_sum = @p_sum + @p_sal
fetch from c into @p_sal
end
close c
deallocate c
set @sum = @p_sum
end
这不是T-SQL。此代码不是为以下(DB2)文档的SQL Server.SqlServer版本设计的: