Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中将数据库排序规则读入变量时出现问题_Sql_Sql Server_Database_Sqltransaction - Fatal编程技术网

在SQL Server中将数据库排序规则读入变量时出现问题

在SQL Server中将数据库排序规则读入变量时出现问题,sql,sql-server,database,sqltransaction,Sql,Sql Server,Database,Sqltransaction,我遇到了一件奇怪的事情,我不能将变量的值设置为查询的结果。查询正在读取数据库的排序规则,并且本身工作正常: SELECT collation_name FROM sys.databases WHERE [name] = 'my_DB'; 结果是: SQL\u Latin1\u General\u CP1\u CI\u AS 但是当我想把结果放入一个变量中时,我没有得到结果(也没有错误) 我可以将其他SELECT查询的结果设置为varchar变量。这是一种方法: declare @DB_col

我遇到了一件奇怪的事情,我不能将变量的值设置为查询的结果。查询正在读取数据库的排序规则,并且本身工作正常:

SELECT collation_name 
FROM sys.databases
WHERE [name] = 'my_DB';
结果是:
SQL\u Latin1\u General\u CP1\u CI\u AS

但是当我想把结果放入一个变量中时,我没有得到结果(也没有错误)


我可以将其他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;

备注:请在“消息”选项卡中查看打印语句的结果,而不是在“结果”选项卡中查看“打印语句的结果”

“打印语句不起作用”不会为任何人提供任何关于错误和修复方法的线索。我所能告诉您的是,这个查询在功能上等同于单独选择它,如果您愿意,您可以使用ManagementStudio在单独的实例上验证这一点。检查诸如“我是否在正确的服务器上”、“我是否使用相同的登录名”、“我的数据库名是否完全相同,不包含大小写差异或不可见字符”之类的基本内容。您是否放置
选择@DB\u collation在查询的底部?(也可以尝试
选择LEN(@DB\u collation)
,以获得乐趣)。请记住,给定的查询不会产生结果,它只设置变量。捕获
PRINT
消息是在单独的选项卡中完成的(在SSMS中;其他客户端可能根本无法捕获它们)。@Iraj请在消息选项卡而不是结果中查看您的结果tab@Iraj我已经更新了我的答案。那么你在“消息”选项卡中找到了它们?@VBoka是的,它在“消息”选项卡中。谢谢您的时间。我看到@JeroenMostertThank you的评论中已经写了这些内容。它起作用了。但我还是不明白为什么打印不起作用。我试过:
declare@testvar-varchar(100);设置@testvar=@DB\u排序规则;打印@testvar
,但仍然不会打印任何内容。我不确定变量的内容是否为normalvarchar。这对我来说很重要,因为我在代码/查询的其余部分中需要它。@Iraj您使用的工具的名称是什么?@Iraj我不知道您正在查看的演示是什么,但此演示:与打印一起使用。您必须知道,我必须使用tempdb而不是my_DB,因为我在sys.databases中有tempdb,正如您在本演示的第一次选择中所看到的那样
declare @DB_collation varchar(100);
SELECT  @DB_collation = 
    collation_name 
    FROM sys.databases
    WHERE name = 'tempdb' 
    
select @DB_collation;