How to execute a stored procedure inside a select query

前端 未结 7 673
暖寄归人
暖寄归人 2020-12-03 09:26
SELECT col1,
       col2,
       col3,

EXEC GetAIntFromStoredProc(T.col1) AS col4
     FROM Tbl AS T
     WHERE (col2 = @parm) 

How to write this

相关标签:
7条回答
  • 2020-12-03 10:18

    Create a dynamic view and get result from it.......

    CREATE PROCEDURE dbo.usp_userwise_columns_value
    (
        @userid BIGINT
    )
    AS 
    BEGIN
            DECLARE @maincmd NVARCHAR(max);
            DECLARE @columnlist NVARCHAR(max);
            DECLARE @columnname VARCHAR(150);
            DECLARE @nickname VARCHAR(50);
    
            SET @maincmd = '';
            SET @columnname = '';
            SET @columnlist = '';
            SET @nickname = '';
    
            DECLARE CUR_COLUMNLIST CURSOR FAST_FORWARD
            FOR
                SELECT columnname , nickname
                FROM dbo.v_userwise_columns 
                WHERE userid = @userid
    
            OPEN CUR_COLUMNLIST
            IF @@ERROR <> 0
                BEGIN
                    ROLLBACK
                    RETURN
                END   
    
            FETCH NEXT FROM CUR_COLUMNLIST
            INTO @columnname, @nickname
    
            WHILE @@FETCH_STATUS = 0
                BEGIN
                    SET @columnlist = @columnlist + @columnname + ','
    
                    FETCH NEXT FROM CUR_COLUMNLIST
                    INTO @columnname, @nickname
                END
            CLOSE CUR_COLUMNLIST
            DEALLOCATE CUR_COLUMNLIST  
    
            IF NOT EXISTS (SELECT * FROM sys.views WHERE name = 'v_userwise_columns_value')
                BEGIN
                    SET @maincmd = 'CREATE VIEW dbo.v_userwise_columns_value AS SELECT sjoid, CONVERT(BIGINT, ' + CONVERT(VARCHAR(10), @userid) + ') as userid , ' 
                                + CHAR(39) + @nickname + CHAR(39) + ' as nickname, ' 
                                + @columnlist + ' compcode FROM dbo.SJOTran '
                END
            ELSE
                BEGIN
                    SET @maincmd = 'ALTER VIEW dbo.v_userwise_columns_value AS SELECT sjoid, CONVERT(BIGINT, ' + CONVERT(VARCHAR(10), @userid) + ') as userid , ' 
                                + CHAR(39) + @nickname + CHAR(39) + ' as nickname, ' 
                                + @columnlist + ' compcode FROM dbo.SJOTran '
                END
    
            EXECUTE sp_executesql @maincmd
    END
    
    -----------------------------------------------
    SELECT * FROM dbo.v_userwise_columns_value
    
    0 讨论(0)
提交回复
热议问题