Sres. tengo un pequeño problema... este SP me funciona bien usandolo por
fuera del Exec(), pero tengo el inconveniente de que lo necesito usar con
Exec() ya que debo pasar un parametro como USERID para formar cadenas, para
crear tablas individuales a los usuarios... esto es de una aplicacion de
reportes que he disenado en VB6, la cual funciona en un ambiente cliente
servidor con una base de datos especifica...
el problema es que cuando coloco el SP de esta forma :
CREATE PROCEDURE AHD.sp_lleno_tipo_causa_userid @userid char(20) AS
SET NOCOUNT ON
declare @servicio varchar(60), @ticket char(15)
exec('DECLARE Cursor_grupos SCROLL CURSOR FOR
SELECT DISTINCT rootcause
FROM AHD.ss_solicitudes_area_' + @userid + ' where rootcause is not
null and tipo_causa in (null, '''')')
OPEN Cursor_grupos
FETCH NEXT FROM Cursor_grupos INTO @servicio
WHILE @@FETCH_STATUS = 0
BEGIN
declare @punto1 int
declare @punto2 int
declare @punto3 int
declare @punto4 int
print @servicio
********************************
Aqui es mi problema
estas lineas deben leer una linea como esta
"IT.ABT.Mantenimiento en Branch Adm"
y desglozar los valores entre puntos(.)
pero estos son los errores que recibo :
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '='.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'en'.
IT.ABT.Mantenimiento en Branch Adm
********************************
exec('set '+ @punto1+ ' = PATINDEX(''%.%'', (select distinct rootcause from
AHD.ss_solicitudes_area_'+ @userid +' where rootcause = ' + @servicio +
'))')
exec('set '+ @punto2 +' = PATINDEX(''%.%'', substring((select distinct
rootcause from AHD.ss_solicitudes_area_'+ @userid +' where rootcause =
'+@servicio+'),'+@punto1+'+1,100))')
exec('set '+@punto3 +'= PATINDEX(''%.%'', substring((select distinct
rootcause from AHD.ss_solicitudes_area_'+ @userid +' where rootcause =
'+@servicio+'),'+@punto2+'+1,100))')
exec('set '+@punto4 +' = PATINDEX(''%.%'', substring((select distinct
rootcause from AHD.ss_solicitudes_area_'+ @userid +' where rootcause =
'+@servicio+'),'+@punto3+'+1,100))')
********************************
********************************
if @punto1 = 0
Begin
exec('UPDATE AHD.ss_solicitudes_area_'+ @userid +'
set tipo_causa = rootcause
where rootcause = '+@servicio+'')
End
if @punto1 >= 1
Begin
exec('UPDATE AHD.ss_solicitudes_area_'+ @userid+ '
set tipo_causa = ltrim(( select substring((select distinct
rootcause from AHD.ss_solicitudes_area_'+
@userid +'
where rootcause like ' + @servicio + ' ), '+ @punto1+' +
1,
100 ))) where rootcause = '+ @servicio +' ')
End
if @punto2 >= 1
Begin
exec('UPDATE AHD.ss_solicitudes_area_'+ @userid +'
set tipo_causa = ltrim(( select substring((select distinct
rootcause from AHD.ss_solicitudes_area_'+
@userid+' where rootcause like '+@servicio+' ), '+ @punto1+ ' + 1, ' +
@punto2 + ' - 1 ))) where rootcause =
'+@servicio+'')
End
FETCH NEXT FROM Cursor_grupos INTO @servicio
END
CLOSE Cursor_grupos
DEALLOCATE Cursor_grupos
GO
Leer las respuestas