sql-server-2008 – 为什么我不能像我想象的那样在T-SQL中使用变量?

前端之家收集整理的这篇文章主要介绍了sql-server-2008 – 为什么我不能像我想象的那样在T-SQL中使用变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请原谅我,我是一名移植到sql世界的开发人员.我以为我可以通过添加变量来改进一些sql,但它没有像我预期的那样运行.有人能告诉我为什么这不起作用?我不想要一个解决方法,我想知道为什么这不起作用的原因我想象它应该因为我确信有一个很好的理由,但目前它并没有跳出来.
DECLARE @DatabaseName varchar(150)
SET @DatabaseName = 'MyAmazingDatabaseName'

CREATE DATABASE @DatabaseName
GO

USE @DatabaseName
GO

解决方法

根据 variables的书籍在线页面

Variables can be used only in expressions,not in place of object
names or keywords. To construct dynamic sql statements,use EXECUTE.

例如,如果您在where子句中使用了变量,它将以您期望的方式工作.至于为什么,我认为它与解析器无法评估变量并因此检查存在有关.执行时,首先解析查询的语法和对象,然后,如果解析成功,查询将执行该变量的设置.

DECLARE @name varchar(20);
SET @name = 'test';

CREATE TABLE [#tmp]([val] varchar(10));

insert into #tmp
values('test')

SELECT *
FROM [#tmp]
WHERE [val] = @name;

猜你在找的MsSQL相关文章