MSSQL 关于存储过程的问题

[复制链接]
查看11 | 回复5 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
需要将一个ORACLE的存储过程转成MSSQL的
但是现在错误百出。。。
CREATEPROCEDURE G$DataProcess
@p_Year VARCHAR(6),
@v_Lxdm VARCHAR(10),
@v_Qdzh NUMBER(8, 3),
@v_Zdzh NUMBER(8, 3),
@v_Gldw VARCHAR(11)AS
DECLARE c_TrueList CURSOR FOR
SELECT 路线代码, isnull(起点桩号, 0), isnull(止点桩号, 0), 管理单位
FROM G$公路路段单位管理
BEGIN
-- 绿化管理系统的数据处理
OPEN c_TrueList;
WHILE TRUE
BEGIN
= v_Qdzh And 止点桩号 = v_Qdzh And 止点桩号 = v_Qdzh And 止点桩号 <= v_Zdzh;
还有一点需要提出的是,在使用循环语句的时候可以使用while(@@fetchstatus=0),其中@@fetchstatus是系统的全局变量,如果游标取数成功就为零;另外,游标在使用过程中会耗费大量的系统资源,建议使用带有identity列的临时表,这样的效率比较高,虽然大家对游标很熟悉!
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
这个原本是ORACLE中的存储过程,改了一半还没改完呢。谢谢楼上的建议
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
全局变量@@fetchstatus应该为@@fetch_status
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
CREATE PROCEDURE usp_DeleteAStudent
@psno char(5),
@return char(1) output
AS
if exist((delete from sc where sno=@psno)=1)
@return=1
else @return=0
楼上哪位能帮我看看,这个存储过程错在哪里,系统总是提示,第五行:')'有错误
我刚开始学,请各位大虾指教,谢谢了
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
exist(delete from sc where sno=@psno)
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
不行也,是不是DELETE语句没有返回值呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行