编辑:
我的代码中出现了一个参数调试问题的问题.我真诚地感谢大家的帮助;我的sql理解每次访问SO更好.
我的代码中出现了一个参数调试问题的问题.我真诚地感谢大家的帮助;我的sql理解每次访问SO更好.
我正在编写一个存储过程,需要从另一个表中选择一些信息才能完成其工作.
DECLARE @configVar int; SET @configVar = (SELECT ExampleSetting FROM Settings WHERE SettingID = 1); -- do something with @configVar to get the final result set
显然(对于对sql有更好理解的人),以上是不正确的.没有错误,除了执行存储过程之外,@configVar设置为NULL.我已经仔细检查了我正在选择的表,并确保数据存在.
有人能告诉我我的误会,我应该如何纠正?似乎这可能是一个常见的成语;这通常如何实现?
解决方法
Tsql允许您在SELECT子句中设置变量,方法是:
SELECT @configVar = s.examplesetting FROM SETTINGS s WHERE s.settingid = 1
这假设表中只有一个记录,其中setid值为1.
有关使用的更多信息,请参阅问题“TSQL – SET vs. SELECT when assigning variables?”.