1

我想创建基于输入参数有条件地输出 JSON 的存储过程。这可以在不必复制 select 语句的情况下完成吗?

CREATE PROCEDURE myProcedure @outputJson bit 
AS
BEGIN

        IF outputJson = 1
        BEGIN

            SELECT col1,
                   col2,
                   col3
              FROM dbo.MyTable 
               FOR JSON PATH    

        END
        ELSE
        BEGIN

            SELECT col1,
                   col2,
                   col3
              FROM dbo.MyTable 

        END

END
GO
4

1 回答 1

2

您可以使用使用动态 sql 在参数中包含“FOR JSON”子句。

CREATE PROCEDURE dbo.myProcedure @outputJson bit
AS
BEGIN
    DECLARE @sql nvarchar(max) = N'SELECT col1, col2, col3 FROM dbo.MyTable';

    IF @outputJson = 1
    BEGIN
        SET @sql += ' FOR JSON PATH';
    END

    EXECUTE sp_executesql @sql;
END
GO
于 2018-08-10T22:52:17.580 回答