您的位置:首页 > 数据库

最近项目中用到sql的一些资料总结

2009-05-14 14:05 543 查看
最近在存储过程中用到了关于游标的一些东西。

第一 输出参数

output

第二 关于游标性能的问题。

代码

ALTER PROCEDURE getProductDetialed
(@id int,@sortName varchar(400) output,@channel varchar(400) output)
/*
(获取产品详细
@parameter1 int = 5,
@parameter2 datatype OUTPUT

)
*/
AS
begin
SET NOCOUNT ON
declare @chanel1 varchar(400)
declare @sortName1 varchar(400)
declare @sortId int
set @sortId=(select db_goodSort from db_good where db_goodId=@id)
select db_goodId,db_goodName,db_goodsmallPic,db_goodPic,db_price,db_goodDescription,db_lookCount,db_sellCount,db_cunhuo,db_canel,keyWords from db_good where db_goodId=@id
declare one cursor
for
select dg.ChannelName as channelName,ds.db_goodSortName as goodSortName from db_goodChannel as dg inner join db_goodSort as ds on dg.id=ds.db_goodSortChannel where ds.db_goodSortId=@sortId
open one
fetch next from one into @chanel1,@sortName1
close one
deallocate one
set @channel=@chanel1
set @sortName=@sortName1
end

无论如何也显示不出来输出参数的值,后来检查出来时fetch next的地方出问题了

因为我加了个

while @ftech_status=0

其实刚开始的时候游标地址是没有指向第一行的,所以@ftech-status并不等于0

还有的是into的时候,文档上说是要局部变量。

所以我去掉@ftech-status的时候,成功运行了、

还有一点就是输出参数必须是@@全局变量

至于性能方面的话,尽量的将值快速读取,快速关闭游标,我想在小的地方还是很快的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: