Ayuda con funcion
Publicado por Carlos Reyes (49 intervenciones) el 06/03/2008 22:37:08
Hola que tal
Veran, tengo una funcion que se supone debe retornar una cadena concatenada con los nombres de las columnas de duna tabla dada y un nombre de columna + el % para encontrar las columnas similares; el problema es en la funcion como tal, ejecuto dicho codigo externo a una funcion y se ejecuta perfectamente concatenando mi cadena como la quiero, pero al ejecutar la funcion unicamente me regresa un caracter. Les pongo el codigo haber si encuentran en donde la estoy regando.
CREATE FUNCTION fun_concatenaNomCols(@tabla VARCHAR(200),@columna VARCHAR(200))
RETURNS VARCHAR
AS
BEGIN
DECLARE @cadRet VARCHAR(2000),
@colNom VARCHAR(200)
SET @cadRet = ''
SET @colNom = ''
DECLARE cols_cur CURSOR FOR
SELECT syscolumns.name FROM sysobjects
LEFT OUTER JOIN syscolumns on sysobjects.id = syscolumns.id
WHERE sysobjects.xtype = 'U'
AND sysobjects.name = @tabla
AND syscolumns.name LIKE @columna + '%'
ORDER BY syscolumns.name
OPEN cols_cur
FETCH NEXT FROM cols_cur
INTO @colNom
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cadRet = @cadRet + @colNom + '+'
FETCH NEXT FROM cols_cur
INTO @colNom
END
CLOSE cols_cur
DEALLOCATE cols_cur
SET @cadRet = LEFT(@cadRet,LEN(@cadRet)-1)
RETURN @cadRet
END
Saludos!!!!!
Veran, tengo una funcion que se supone debe retornar una cadena concatenada con los nombres de las columnas de duna tabla dada y un nombre de columna + el % para encontrar las columnas similares; el problema es en la funcion como tal, ejecuto dicho codigo externo a una funcion y se ejecuta perfectamente concatenando mi cadena como la quiero, pero al ejecutar la funcion unicamente me regresa un caracter. Les pongo el codigo haber si encuentran en donde la estoy regando.
CREATE FUNCTION fun_concatenaNomCols(@tabla VARCHAR(200),@columna VARCHAR(200))
RETURNS VARCHAR
AS
BEGIN
DECLARE @cadRet VARCHAR(2000),
@colNom VARCHAR(200)
SET @cadRet = ''
SET @colNom = ''
DECLARE cols_cur CURSOR FOR
SELECT syscolumns.name FROM sysobjects
LEFT OUTER JOIN syscolumns on sysobjects.id = syscolumns.id
WHERE sysobjects.xtype = 'U'
AND sysobjects.name = @tabla
AND syscolumns.name LIKE @columna + '%'
ORDER BY syscolumns.name
OPEN cols_cur
FETCH NEXT FROM cols_cur
INTO @colNom
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cadRet = @cadRet + @colNom + '+'
FETCH NEXT FROM cols_cur
INTO @colNom
END
CLOSE cols_cur
DEALLOCATE cols_cur
SET @cadRet = LEFT(@cadRet,LEN(@cadRet)-1)
RETURN @cadRet
END
Saludos!!!!!
Valora esta pregunta


0