存储过程问题 SQLServer问题!

setANSI_NULLSONsetQUOTED_IDENTIFIERONGOALTERprocedure[dbo].[Corss]@strTabNameasvarcha... set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Corss]
@strTabName as varchar(50),
@strCol as varchar(50),--字段名称
@strGroup as varchar(50),--分组字段
@strNum as varchar(50), --被统计字段
@strSum as varchar(10)='Sum' --运算方式
AS
declare @strsql as varchar(1000),@strTmpCol as varchar(100)
EXECUTE('DECLARE corss_cursor CURSOR FOR SELECT DISTINCT'+@strCol+'from'+@strTabName+'for read only')--生成游标
begin
set nocount ON
set @strsql='select'+@strGroup+','+@strSum+'('+@strNum+')AS['+@strNum+']'--查询前半段
Open corss_cursor
while(0=0)
begin
FETCH NEXT FROM corss_cursor --遍历游标,将列头信息放入变量@strTmpCol
INTO @strTmpCol
if(@@fetch_status<>0)break
SET @strsql=@strsql+','+@strSum+'(CASE'+@strCol+'WHEN'+@strTmpCol+'THEN'+@strNum+'ELSE Null END)AS['+@strTmpCol+']'--构造查询
end
set @strsql=@strsql+'from'+@strTabName+'group by'+@strGroup--查询结尾
EXEC(@strsql)
if @@error<>0 return @@error--如果出错,返回错误代码
Close corss_cursor
DEALLOCATE corss_cursor return 0--释放游标,返回0表示成功
end
这是我间的存储过程 在系统中调用的时候 说游标不存在 是怎么回事啊!急在线等
展开
 我来答
牧之卉0j1
2010-11-15 · TA获得超过1151个赞
知道大有可为答主
回答量:1689
采纳率:0%
帮助的人:1744万
展开全部
EXECUTE('DECLARE corss_cursor CURSOR FOR SELECT DISTINCT'+@strCol+'from'+@strTabName+'for read only')--生成游标
这句有问题,没能成功定义游标
for前面少了个空格? select .. from .. for .. 之间都要有空格。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式