加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:58:24 所属栏目:MsSql教程 来源:网络整理
导读:请原谅我,我是一名移植到SQL世界的开发人员.我以为我可以通过添加变量来改进一些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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读