【发布时间】:2017-03-02 15:32:19
【问题描述】:
我已经在寻找解决方案,但答案不够具体,无法解决我的问题。
所以我有这个声明:
IF NOT EXISTS
(SELECT InternalRepositoryId FROM Tfs_GitInterface.dbo.tbl_GitRepository WHERE Name = @repositoryName)
BEGIN
...
END
当然也可以:
IF NOT EXISTS
(SELECT InternalRepositoryId FROM dbo.tbl_GitRepository WHERE Name = @repositoryName)
BEGIN
...
END
它的工作完全正常。我想提一下,dbo 是另一个数据库的模式。现在我想做这样的事情:
DECLARE @schema [nvarchar](400);
SET @schema = 'dbo';
IF NOT EXISTS
(SELECT InternalRepositoryId FROM @schema.tbl_GitRepository WHERE Name = @repositoryName)
BEGIN
...
END
或
DECLARE @schemaTable [nvarchar](400);
SET @schemaTable = 'dbo.tbl_GitRepository';
IF NOT EXISTS
(SELECT InternalRepositoryId FROM @schemaTable WHERE Name = @repositoryName)
BEGIN
...
END
现在我已经尝试了一些动态 sql,但它不会没有错误:
DECLARE @schemaTable [nvarchar](400);
SET @schemaTable = 'dbo.tbl_GitRepository';
DECLARE @sql [nvarchar](4000);
SET @sql = 'SELECT InternalRepositoryId FROM ' + @schemaTable + ' WHERE Name = ' + @repositoryName;
IF NOT EXISTS
(EXECUTE sp_executesql @sql)
BEGIN
...
END
然后我在执行时收到错误:“'EXECUTE' 附近的语法不正确。期待 '(', or SELECT”和一些小错误。
有人知道怎么做吗?
编辑:IF 语句是个大问题
【问题讨论】:
-
链接的问题似乎会满足您的需求。
-
我已经尝试过类似的方法,但没有成功:/
标签: sql-server dynamic-sql sp-executesql