Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayudenme a Resolver un Problema en consulta SQL!

Estas en el tema de Ayudenme a Resolver un Problema en consulta SQL! en el foro de Bases de Datos General en Foros del Web. HOLA A TODOS!. Tengo el siguiente código, y lo quiero ejecutar en el analizador de consultas, pero me manda los varios errores antes de compilarlo. ...
  #1 (permalink)  
Antiguo 20/12/2003, 13:30
 
Fecha de Ingreso: noviembre-2003
Mensajes: 38
Antigüedad: 20 años, 5 meses
Puntos: 0
De acuerdo Ayudenme a Resolver un Problema en consulta SQL!

HOLA A TODOS!. Tengo el siguiente código, y lo quiero ejecutar en el analizador de consultas, pero me manda los varios errores antes de compilarlo.

CREATE PROCEDURE TransitDetalle
@NumComp varchar(50),
@IdMes varchar(10),
@Tipo varchar(15)
AS
DECLARE @Consec int --captura el numero consecutivo
DECLARE @PosCadena varchar(4)
DECLARE @TCuenta int
DELETE TransitCompDet --se limpia la tabla
INSERT INTO TransitCompDet --se inserta el detalle del comprobante anulado
SELECT * FROM ComprobanteDetalle WHERE NoComprobante=@NumComp
DELETE ComprobanteDetalle WHERE NoComprobante=@NumComp --se borran el detalle
IF (@Tipo)='Egreso' --primer if
BEGIN
--si el no de comprobante es A + NoComprobante, o sea ya existe un registro
--con este No de comprobante anulado
SELECT NoComprobante FROM Comprobante WHERE (NoComprobante LIKE 'A' + @NumComp)
--SET @TCuenta = COUNT()
IF @@ROWCOUNT = 1
BEGIN
--se le antepone al codigo del comprobante dos A, de anulado dos veces
UPDATE Comprobante
SET NoComprobante = ('AA' + @NumComp)
WHERE NoComprobante =@NumComp
--se le antepone A a todos los detalle copiados
UPDATE TransitCompDet
SET NoComprobante = ('AA' + @NumComp)
WHERE NoComprobante = @NumComp
END
--si no hay ningun registro anulado con este No de comprobante concatenado con la "A"
-- IF COUNT(SELECT NoComprobante FROM Comprobante WHERE NoComprobante=('A' + @NumComp))=0
IF @@ROWCOUNT = 0
BEGIN
--se le antepone al codigo del comprobante una A, de anulado
UPDATE Comprobante
SET NoComprobante = ('A' + @NumComp)
WHERE NoComprobante = @NumComp
--se le antepone A a todos los detalle copiados
UPDATE TransitCompDet
SET NoComprobante = ('A' + @NumComp)
WHERE NoComprobante = @NumComp
END
END
ELSE --si no es un comprobante de egreso
BEGIN
--se crea una vista con los numeros mas altos
DROP VIEW CompAlto
--Si el tipo de comprobante es de Ingresos
IF (@Tipo)='Ingreso'
BEGIN
CREATE VIEW CompAlto AS
--crea la vista filtrando solo el registro con el numero consecutivo mayor
SELECT TOP 1 dbo.Comprobante.NoComprobante, dbo.Comprobante.IdMes, dbo.Comprobante.Anulado, SUBSTRING(dbo.Comprobante.NoComprobante, 11, 4) AS Consecutivo
FROM dbo.Comprobante INNER JOIN
dbo.MesFiscal ON dbo.Comprobante.IdMes = dbo.MesFiscal.IdMes
WHERE (dbo.MesFiscal.Estado = 1) AND (dbo.Comprobante.Anulado = 1) AND (dbo.Comprobante.NoComprobante LIKE N'AI%')
--ORDER BY dbo.Comprobante.NoComprobante DESC
--GO --termina la creacion de la vista
END
--Si el tipo de comprobante es de Diario
IF (@Tipo)='Diario'
BEGIN
CREATE VIEW CompAlto AS
--crea la vista filtrando solo el registro con el numero consecutivo mayor
SELECT TOP 1 dbo.Comprobante.NoComprobante, dbo.Comprobante.IdMes, dbo.Comprobante.Anulado, SUBSTRING(dbo.Comprobante.NoComprobante, 11, 4) AS Consecutivo
FROM dbo.Comprobante INNER JOIN
dbo.MesFiscal ON dbo.Comprobante.IdMes = dbo.MesFiscal.IdMes
WHERE (dbo.MesFiscal.Estado = 1) AND (dbo.Comprobante.Anulado = 1) AND (dbo.Comprobante.NoComprobante LIKE N'AD%')
ORDER BY dbo.Comprobante.NoComprobante DESC
--GO --termina la creacion de la vista
END
--se verifica si existen registro en la vista y se captura el dato
SELECT NoComprobante FROM SisContab
IF @@ROWCOUNT = 0
BEGIN
@Consec = 1
END
ELSE
BEGIN
DECLARE @TConsec int
SET @TConsec =(SELECT Consecutivo FROM CompAlto)
@Consec = (@TConsec + 1)
END
--se le asigna el valor a la @postcadena
IF @Consec < 9
BEGIN
@PosCadena = '000' + CAST(@Consec as Varchar(1))
END
ELSE
BEGIN
IF @Consec < 99
BEGIN
@PosCadena = '00' + CAST(@Consec as Varchar(2))
END
ELSE
BEGIN
IF @Consec < 999
BEGIN
@PosCadena = '0' + CAST(@Consec as Varchar(3))
END
ELSE
BEGIN
@PosCadena = CAST(@Consec as Varchar(4))
END
END
END
--Si el tipo de comprobante es de Egresos o Pagos
--se le antepone al codigo del comprobante una A, de anulado
UPDATE Comprobante
SET NoComprobante = ('A' + substring(@NumComp,1,9) + @PosCadena)
WHERE NoComprobante = @NumComp
--se le antepone A a todos los detalle copiados
UPDATE TransitCompDet
SET NoComprobante = ('A' + substring(@NumComp,1,9) + @PosCadena)
WHERE NoComprobante = @NumComp
END--se cierra el primer if
--se copia el detalle a su tabla original
INSERT INTO ComprobanteDetalle
SELECT * FROM TransitCompDet --WHERE NoComprobante=@NumComp

GO

ME MANDA LOS SIGUIENTES ERRORES, QUE NO SE PORQUE; TODO LO VEO BIEN, TALVES ALGUIEN ME DICE EL PORQUE:

Server: Msg 156, Level 15, State 1, Procedure TransitDetalle, Line 51
Incorrect syntax near the keyword 'VIEW'.
Server: Msg 156, Level 15, State 1, Procedure TransitDetalle, Line 63
Incorrect syntax near the keyword 'VIEW'.
Server: Msg 170, Level 15, State 1, Procedure TransitDetalle, Line 76
Line 76: Incorrect syntax near '@Consec'.
Server: Msg 170, Level 15, State 1, Procedure TransitDetalle, Line 82
Line 82: Incorrect syntax near '@Consec'.
Server: Msg 170, Level 15, State 1, Procedure TransitDetalle, Line 87
Line 87: Incorrect syntax near '@PosCadena'.
Server: Msg 170, Level 15, State 1, Procedure TransitDetalle, Line 93
Line 93: Incorrect syntax near '@PosCadena'.
Server: Msg 170, Level 15, State 1, Procedure TransitDetalle, Line 99
Line 99: Incorrect syntax near '@PosCadena'.
Server: Msg 156, Level 15, State 1, Procedure TransitDetalle, Line 116
Incorrect syntax near the keyword 'END'.

GRACIAS DE ANTEMANO!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:51.