我正尝试使用函数更新表列。函数的输入参数是我想要更新的表中的数据字段。使用当前列作为函数的输入参数的T-SQL更新表
比方说,我有两列(“国家”和“资本”)表。输入“Capital”,我使用一个按大写字母作为输入参数返回县名的函数。所以,我更新的代码是这样的:
UPDATE @TableName
SET Country=(SELECT Country FROM dbo.fn_GetCountryByCapital(Capital))
没有通过IntelliSence产生的错误,但F5按它说:
附近有语法错误“资本”。
请注意,这只是一个例子(因为它可能看起来很愚蠢)。为了描述我的问题,我给了它样本。我的真实情况包括在更新语句中使用几个函数。
非常感谢您的帮助。 Joro
可能的解决方案:
我已经找到其他的方式来做到这一点。它看起来并不那么好,但它的工作原理:
- 我已经为了while语句
- 使用对于每个记录在表中我的临时表中添加索引(使用while语句),我已经使用临时变量存储我都需要
- 然后,我已经过了这个信息,我的职能领域的信息,我已经习惯了更新表的结果
我的猜测是,括号“()”包围着的选择声明和函数不允许该函数使用正确的val来自桌上的你。
资本应该是参数。你想用你的函数的返回值更新Country country的所有行吗? – 2012-02-11 09:57:43
是的,我知道: - ]。我已经写下了其余的功能。如果你这样做 更新表名称 设置Field1 = Field2 它的工作原理。那么,为什么我不能将Field2传递给我的函数呢? – gotqn 2012-02-11 10:00:19
你是否通过资本作为参数,对吗?如果是这样,应该参数@Capital? – 2012-02-11 10:10:35