首页 > 解决方案 > 如何使用变量执行Update方法来调用表?

问题描述

我正在尝试在 SQL Server 中创建一个过程,以允许我更新表中的列。
但是,我希望表名来自变量而不是由我给出,但我收到一条错误消息。这是我到目前为止所拥有的:

我在一个包含多个字段的应用程序中有一个表单,我在 SQL 中有一个表 (FormFieldsTable),其中包含字段的名称、它所属的表......以及有关这些字段的其他信息。在该过程中,我将@inputFieldID、@inputRequestID 和@inputUpdatedField 作为输入。然后,我声明字段名和表,并根据表FormFieldsTable进行设置。之后,我声明了变量 TableID,它是每个表的 ID 列的名称,始终是表名后跟“ID”,变量 @TableName 是模式和该字段的表名之间的连接.

@inputFieldID int,
@inputRequestID int,
@inputUpdatedField nvarchar(100)=null

AS
BEGIN

DECLARE @FieldTable nvarchar(50)
DECLARE @TableIDName nvarchar(50) 
DECLARE @FieldName nvarchar(100)
DECLARE @TableName nvarchar(50)

SET @FieldTable = (SELECT FieldTable FROM FormFieldsTable WHERE FormFieldsTableID=@inputFieldID)
SET @TableIDName = CONCAT(@FieldTable,'ID') 
SET @FieldName = (SELECT REPLACE(FieldName,' ','') FROM FormFieldsTable WHERE FormFieldsTableID=@inputFieldID)
SET @TableName = CONCAT('Schema.',@FieldTable)

毕竟,我想对该字段的表执行更新方法,因此我执行以下操作:

UPDATE @TableName
SET @FieldName=@inputUpdatedField
WHERE @TableIDName=(SELECT @TableIDName FROM Schema.Request WHERE RequestID=@inputRequestID)

问题是我在UPDATE @TableName上收到一条错误消息,上面写着“必须声明表变量 @TableName”。我试图创建一个@tempTable,但我仍然需要更新正确的表,所以我不知道如何解决这个问题。

你能帮助我吗?

标签: sql-servervariablessql-updatetable-variable

解决方案


推荐阅读