【发布时间】:2013-01-27 08:23:11
【问题描述】:
这是我的存储过程:
CREATE PROCEDURE uspUpdateDataInBapMidTable (
@companyName varchar(50)
)
AS
BEGIN
SET @companyName = 'nürnberger'
DECLARE @tableNameMid varchar(50) , @tableNameIn varchar(50) , @queryToCreateTable nvarchar (500) , @queryToAddColumn nvarchar(500)
DECLARE @queryToUpdateBapMid nvarchar(500)
SET @tableNameMid = 'BAP_'+@companyName+'_MID'
SET @tableNameIn = 'BAP_'+@companyName+'_IN'
DECLARE @COGI varchar (50)
SET @COGI = ''
SET NOCOUNT ON
DECLARE @collectionOfGesellschaft_id nvarchar(100)
DECLARE myCursor cursor FOR
SELECT distinct gesellschaft_id from CRM_Wifo_GmbH.dbo.vertrag_168 where gesellschaft like '%nürnberger%'
open myCursor
DECLARE @collectionOfGesellschaft_id1 nvarchar(100)
set @collectionOfGesellschaft_id = '('
fetch next from myCursor into @collectionOfGesellschaft_id1
while @@fetch_status = 0
begin
set @collectionOfGesellschaft_id = @collectionOfGesellschaft_id + @collectionOfGesellschaft_id1 + ' ,'
fetch next from myCursor into @collectionOfGesellschaft_id1
END
set @collectionOfGesellschaft_id = SUBSTRING(@collectionOfGesellschaft_id,1,LEN(@collectionOfGesellschaft_id)-1) + ')'
SET @COGI = @collectionOfGesellschaft_id
CLOSE myCursor
DEALLOCATE myCursor
go
SET @queryToUpdateBapMid = N'select distinct b.*,v.vertrag_id,v.VersicherungsscheinNummer
from CRM_Wifo_GmbH.dbo.vertrag_168 v,temp_universa b where v.VersicherungsscheinNummer like ''%'' + b.VSNR + ''%'' and v.gesellschaft_id in' + @COGI
EXEC(@queryToUpdateBapMid)
END
@companyName 是为我的测试目的而设置的。当我只执行光标时,它运行良好。但在存储过程中显示以下错误:
消息 102,级别 15,状态 1,过程 uspUpdateDataInBapMidTable,第 33 行
'myCursor' 附近的语法不正确。消息 137,第 15 级,状态 2,第 3 行
必须声明标量变量“@COGI”。消息 137,第 15 级,状态 2,第 4 行
必须声明标量变量“@queryToUpdateBapMid”。
我在 SP 的开头声明了这两个变量,但是它们显示了这个错误。这条线有什么问题
DEALLCOATE myCursor
【问题讨论】:
标签: sql-server-2008 stored-procedures cursor