Mak*_*ple 9 sql t-sql sql-server
这可能看起来像一个复制到这里,但事实并非如此.我想要获得最佳实践,而不是技术性答案(我已经知道).
SQL Server的新手,并试图形成良好的习惯.
我找到了对
这里SET @var =和之间的功能差异的一个很好的解释SELECT @var =
:http:    //vyaskn.tripod.com/differences_between_set_and_select.htm
 
总结一下另一个没有的东西(参见示例的来源):
组:
SET @var = (SELECT column_name FROM table_name) 当select返回多于一个值时失败,消除了不可预测结果的可能性.SET @var = (SELECT column_name FROM table_name)@var如果SELECT column_name FROM table_name返回的话将设置为NULL ,因此永远不会离开@var它的先前值.选择:
SELECT @var = column_name FROM table_name将设置@var为(根据我的测试)select返回的最后一个值.这可能是一个功能或错误.可以使用SELECT @j = (SELECT column_name FROM table_name)语法更改行为.那么,我该怎么办?
(几乎)总是使用SET @var =,使用SELECT @var =是凌乱的编码而不是标准.
要么
使用SELECT @var =自由,它可以为我完成更多,除非代码可能被移植到另一个环境.
谢谢
这是我的观点 - 使用 SET 进行简单操作,例如SET @var = 'hardcoded_value'使用 SELECT 进行欺骗性分配,例如从表中进行分配。我几乎总是以以下方式将 select 写入变量语句,以使编译器和任何其他开发人员都清楚我的意图:SELECT TOP 1 @var = col_name FROM some_table
如果我担心可移植性,我就不会编写 T-SQL,而是会坚持使用 ORM 层进行数据访问。
编辑,额外提示:在 SQL 08 中,我喜欢使用这种对于 T-SQL 来说相当简洁的语法:
DECLARE @var int = (SELECT col_name FROM some_table)
| 归档时间: | 
 | 
| 查看次数: | 334 次 | 
| 最近记录: |