He estado tratando de obtener el valor de retorno de un procedimiento y almacenarlo en una variable del procedimiento que lo invoca, pero no lo he conseguido, siempre obteniendo null, mas el procedimiento si retorna la cadena.
El procedimiento es el siguiente:
Código SQL:
Ver original
@pCARACTER VARCHAR(1), @pSTRING VARCHAR(MAX), @pSTRING_RETORNO VARCHAR(MAX) OUTPUT AS DECLARE @TABLA_DATOS AS TABLE (DATO VARCHAR(MAX)); DECLARE @DATO_ACTUAL VARCHAR(MAX); DECLARE @DATOS_FINALES VARCHAR(MAX); DECLARE @EXISTE_DATO INT; BEGIN SET @DATO_ACTUAL = ''; SET @DATOS_FINALES = ''; SET @EXISTE_DATO = 0; WHILE (LEN(@pSTRING) > 0) BEGIN SELECT @DATO_ACTUAL = SUBSTRING(@pSTRING, 1, CHARINDEX(@pCARACTER, @pSTRING) - 1); SET @pSTRING = SUBSTRING(@pSTRING, CHARINDEX(@pCARACTER, @pSTRING) + 1, LEN(@pSTRING)); SELECT @EXISTE_DATO = COUNT(*) FROM @TABLA_DATOS WHERE DATO = @DATO_ACTUAL; IF (@EXISTE_DATO = 0) BEGIN INSERT INTO @TABLA_DATOS (DATO) VALUES (@DATO_ACTUAL); END END SET @DATOS_FINALES = ''; SET @pCARACTER = @pCARACTER + ' '; SELECT @DATOS_FINALES = COALESCE(@DATOS_FINALES + @pCARACTER, '') + DATO FROM @TABLA_DATOS; SELECT @DATOS_FINALES = LTRIM(RTRIM(SUBSTRING(@DATOS_FINALES,2,LEN(@DATOS_FINALES))));
Al momento de invocarlo lo intento así:
Código SQL:
Ver original
DECLARE @CADENA_FINAL VARCHAR(MAX) EXEC PR_PROCEDIMIENTO @pCARACTER = ',', @pSTRING = 'VALOR1,VALOR2,VALOR3,', @pSTRING_RETORNO = @CADENA_FINAL OUTPUT SELECT @CADENA_FINAL AS STRING_RETORNO
o así:
Código SQL:
Ver original
DECLARE @QUERY NVARCHAR(500) DECLARE @PARAMETROS NVARCHAR(500) DECLARE @CARACTER VARCHAR(1) DECLARE @STRING VARCHAR(MAX) DECLARE @STRING_RETORNO VARCHAR(MAX) SET @CARACTER = ',' SET @STRING = 'VALOR1,VALOR2,VALOR3,' SET @QUERY = N'EXEC PR_PROCEDIMIENTO @pCARACTER, @pSTRING, @pSTRING_RETORNO OUTPUT' SET @PARAMETROS = N'@pCARACTER VARCHAR(1), @pSTRING VARCHAR(MAX), @pSTRING_RETORNO VARCHAR(MAX) OUTPUT' EXECUTE sp_executesql @QUERY, @PARAMETROS, @pCARACTER = @CARACTER, @pSTRING = @STRING, @pSTRING_RETORNO = @STRING_RETORNO OUTPUT SELECT @STRING_RETORNO AS "RETORNO"
Siempre me retorna "null" la variable. En el momento de asignación lo estoy haciendo mal?
Espero me puedan ayudar. Gracias