我正在研究C#项目,它需要一个存储过程,它将两个表名作为输入。
第一个表会将数据复制到临时表中,该临时表有两列URL
& channelID
。然后,此URL
列与其他输入表的网址列&匹配。如果找到匹配,那么它将从临时表更新通道ID到其他表通道ID。
我已将存储过程编写为
CREATE PROCEDURE [dbo].[UpdateTables]
@excelTable NVARCHAR(128) ,
@TableName NVARCHAR(128)
AS
Declare @channel_Id nvarchar(50)
Declare @url varchar(400)
BEGIN
Select *
Into #Temp
From QUOTENAME(@excelTable)
END
While EXISTS(SELECT * From #Temp ) > 0
Begin
Select Top 1
@channel_Id = channel_Id, @url = url
From #Temp
update QUOTENAME(@TableName)
set channelid = @channelid
where pagefullurl like '%'+ @url + '%'
Delete #Temp
Where channelid = @channelid
End
我对TSQL
知之甚少,而且上面的代码有错误。
'>'附近的语法不正确。
Msg 137,Level 15,State 2,Procedure UpdateTables,Line 20
必须声明标量变量“@channelid”。Msg 137,Level 15,State 2,Procedure UpdateTables,Line 22
必须声明标量变量“@channelid”。
请建议需要做哪些更改
答案 0 :(得分:0)
我没有MS SQL服务器来测试它,但你将变量声明为Hashtable errorEntry = (Hashtable) hashtable.get("ERROR_2001");
Set set = errorEntry.keySet();
,后来尝试将其用作@channel_Id
(没有下划线),这样你就会得到错误未申报的变量。
答案 1 :(得分:0)
我已经纠正了您的SP,这就是它的外观
{{1}}