Quantcast
Channel: Active questions tagged return-value - Stack Overflow
Viewing all articles
Browse latest Browse all 207

Return the contents of an EXEC from a stored procedure

$
0
0

I have the following which returns a string produced by the EXEC in the output when running the stored procedure directly but I need to pass this string back to a calling stored procedure.

This stored procedure will be called from within the main loop of another stored procedure, and I need the text produced by the EXEC to be stored in a variable on the calling procedure.

I have used the EXEC sp_executesql command before but don't know if this applies here.

Output:

target.JOBID = source.JOBID And target.stackid = source.stackid And target.testtypeid = source.testtypeid And target.sampledparameter = source.sampledparameter And Completion time: 2024-06-26T16:42:29.4295301+01:00

This is the stored procedure I need to return the output of the EXEC:

ALTER PROCEDURE [dbo].[GetLinkCriteria]    @TableName nvarchar(max)ASBEGIN    SET NOCOUNT ON    DECLARE @sql nvarchar(max);    SET @sql = '            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''JOBID'' )                BEGIN SET @linkcriteria = ''target.JOBID = source.JOBID And '' END                      IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''stackid'')                BEGIN SET @linkcriteria += ''target.stackid = source.stackid And '' END                 IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''testtypeid'')                BEGIN SET @linkcriteria += ''target.testtypeid = source.testtypeid And '' END               IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''colid'')                BEGIN SET @linkcriteria += ''target.colid = source.colid And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''runid'')                BEGIN SET @linkcriteria += ''target.runid = source.runid And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''lineid'')                BEGIN SET @linkcriteria += ''target.lineid = source.lineid And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''component'')                BEGIN SET @linkcriteria += ''target.component = source.component And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''sampledparameter'')                BEGIN SET @linkcriteria += ''target.sampledparameter = source.sampledparameter And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''parameter'')                BEGIN SET @linkcriteria += ''target.parameter = source.parameter And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''filename'')                BEGIN SET @linkcriteria += ''target.filename = source.filename And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''runtype'')                BEGIN SET @linkcriteria += ''target.runtype = source.runtype And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''parentmetalparameter'')                BEGIN SET @linkcriteria += ''target.parentmetalparameter = source.parentmetalparameter And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''metal'')                BEGIN SET @linkcriteria += ''target.metal = source.metal And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''gassampled'')                BEGIN SET @linkcriteria += ''target.gassampled = source.gassampled And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''sampledgas'')                BEGIN SET @linkcriteria += ''target.sampledgas = source.sampledgas And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''purpose'')                BEGIN SET @linkcriteria += ''target.purpose = source.purpose And '' END            IF EXISTS (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '''+ @tableName +''' AND COLUMN_NAME = ''isblank'')                BEGIN SET @linkcriteria += ''target.isblank = source.isblank And '' END            PRINT @linkcriteria;';    EXEC ('DECLARE @linkcriteria nvarchar(max);'+ @Sql)END

Viewing all articles
Browse latest Browse all 207

Trending Articles