3

我们公司运行一个 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 而不是硬编码语句。不知道我怎么能做到这一点,任何帮助将不胜感激。

4

1 回答 1

4

您需要使用动态 sql 来实现这一点

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

例如:

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
于 2012-12-28T18:15:36.670 回答