问题描述
我遇到了一个奇怪的事情,我无法将变量的值设置为查询的结果。该查询正在读取数据库的排序规则,并且本身可以正常工作:
SELECT collation_name
FROM sys.databases
WHERE [name] = 'my_DB';
结果类似于:
sql_latin1_General_CP1_CI_AS
但是当我想将结果放入变量中时,我没有结果(也没有错误)
declare @DB_collation varchar(100);
set @DB_collation = (SELECT
collation_name
FROM sys.databases
WHERE name = 'my_DB')
print @DB_collation;
我将其他SELECT查询的结果设置为varchar变量没有问题。
解决方法
这是这样做的方法:
declare @DB_collation varchar(100);
SELECT @DB_collation =
collation_name
FROM sys.databases
WHERE name = 'tempdb'
print @DB_collation;
将变量放在select关键字之后。
这是一个演示:
如果这不起作用,则可以选择变量的值:
declare @DB_collation varchar(100);
SELECT @DB_collation =
collation_name
FROM sys.databases
WHERE name = 'tempdb'
select @DB_collation;
P.S:请在“消息”标签而不是“结果”标签中查看PRINT语句的结果