hola gente,
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 originalDECLARE @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 originalDECLARE @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