TSQL - 尝试将变量与IF EXISTS()函数一起用于简单SP

时间:2012-12-28 18:12:09

标签: sql-server tsql ms-access

我们公司运行MS Access前端和SQL后端,我正在尝试为前端提供一个存储过程,使其能够访问T-SQL的IF EXIST,而不是使用DCount来提高性能。为此,我需要能够将SELECT语句传递给存储过程,到目前为止,我有以下代码:

CREATE PROCEDURE [dbo].IfExists 
@selectStatement varchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (@selectStatement)
    RETURN 1
ELSE
    RETURN 0
END
GO

不起作用,因为它不喜欢@selectStatement而不是硬编码语句。我不确定如何做到这一点,任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

您需要使用动态SQL来实现此目的

http://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/

e.g:

DECLARE @DynamicSQl NVARCHAR(MAX), @retVal INT

SET @DynamicSQl = 'select @retVal = 1 from (' + @selectCommand + ') t'

EXEC sp_executesql @DynamicSQl, N'@retVal INT OUTPUT', @retVal output

IF (@retVal = 1)
  RETURN 1
ELSE
  RETURN 0