SQL - VARIABLES TIPO TABLA

 
Vista:
sin imagen de perfil

VARIABLES TIPO TABLA

Publicado por Marcelo (2 intervenciones) el 15/12/2006 18:04:22
Hola amigos, a ver si alguien me puede ayudar, tengo que hacer una eliminación de una tabla, borrando los constraints, y respaldando los datos, pero no puedo usar las tablas temporales por que estan prohibidas aqui donde trabajo, ahora bien, ya tengo todo el código, borro constraints, paso información a una tabla temporal, pero aqui viene el detalle, cuando quiero borrar la tabla tengo que darle GO, para que lleve a cabo esta instrucción, sin embargo al darle GO, se pierden los valores de mi variable tipo tabla, y al crear la tabla con las modificaciones y querer pasar la info ya no puedo.

¿Alguien me puede decir como hacerle ?

este es el código:

----------------------------------------------------------------------------------------------------------------------------------
--- BORRA LOS CONSTRAINTS PARA BORRAR LAS TABLAS
----------------------------------------------------------------------------------------------------------------------------------
SET NOCOUNT ON

-- Declaración de Variables
DECLARE
@vfcNomFK VARCHAR ( 30 ),
@vfcTabFK VARCHAR ( 30 ),
@vfcNomRef VARCHAR ( 30 ),
@vfcEXECSQL CHAR ( 100 )

---- Elimina los Constrains
DECLARE CurFK INSENSITIVE CURSOR
FOR SELECT S.NAME,
O.NAME,
Y.NAME
FROM SYSREFERENCES R,
SYSOBJECTS O,
SYSOBJECTS S,
SYSOBJECTS Y
WHERE R.fkeyid = O.ID
AND R.constid = S.ID
AND R.rkeyid = Y.ID
AND Y.ID IN ( OBJECT_ID ('dbo.CAJDetPagoFalSobrEmp') )

-- Abre el Cursor
OPEN CurFK

FETCH CurFk INTO @vfcNomFK, @vfcTabFK, @vfcNomRef
-- Recorre el Cursor
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Quita las Referencias
SELECT @vfcEXECSQL = 'Alter Table ' + @vfcTabFk + ' Drop Constraint ' + @vfcNomFk
SELECT @vfcEXECSQL
EXEC ( @vfcEXECSQL )

FETCH CurFk INTO @vfcNomFK, @vfcTabFK, @vfcNomRef
END

-- Cierra el Cursor
CLOSE CurFk
DEALLOCATE CurFk

SET NOCOUNT OFF

IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('DBO.CAJDetPagoFalSobrEmp') AND SysStat & 0xf = 3)
BEGIN
DECLARE
@vftCAJDetPagoFalSobrEmp TABLE (
fiNumFolio INTEGER NOT NULL PRIMARY KEY,
fcOperacion CHAR ( 1 ) NOT NULL,
fiIdTipoDiv SMALLINT NOT NULL,
fiTipoPago TINYINT NOT NULL,
fcIndEfecDoc CHAR ( 1 ) NOT NULL,
fiConcMovto SMALLINT NOT NULL,
fiNoTransac INTEGER NOT NULL,
fiIdentificador INTEGER NOT NULL,
fnMonto DECIMAL ( 12, 2 ) NOT NULL,
fnMontoPrimerPago DECIMAL ( 12, 2 ) NOT NULL,
fnMontoUltimoPago DECIMAL ( 12, 2 ) NOT NULL,
fcEmpAut CHAR ( 6 ) NOT NULL,
fcEmpVal CHAR ( 6 ) NOT NULL,
fcEmpCaja CHAR ( 6 ) NOT NULL,
fcEmpResp CHAR ( 6 ) NOT NULL,
fdFechaAjuste SMALLDATETIME NOT NULL,
fcSemanasdePago CHAR ( 2 ) NOT NULL,
fiIdRegional INTEGER NULL,
fnTDC DECIMAL ( 10, 4 ) NOT NULL )

INSERT INTO @vftCAJDetPagoFalSobrEmp
SELECT
fiNumFolio,
fcOperacion,
fiIdTipoDiv,
fiTipoPago,
fcIndEfecDoc,
fiConcMovto,
fiNoTransac,
fiIdentificador,
fnMonto,
fnMontoPrimerPago,
fnMontoUltimoPago,
fcEmpAut,
fcEmpVal,
fcEmpCaja,
fcEmpResp,
fdFechaAjuste,
fcSemanasdePago,
fiIdRegional,
fnTDC
FROM CAJDetPagoFalSobrEmp WITH (NOLOCK)

--- ¡¡¡¡ AQUI ES DONDE ME ATORE !!! ¿COMO PUEDO HACERLE PARA BORRAR LA TABLA EXISTENTE SIN DARLE GO AQUI, PARA QUE PUEDA CREAR LA OTRA?

DROP TABLE CAJDetPagoFalSobrEmp




-- Crea la tabla con la columna adicional y el constraint
CREATE TABLE dbo.CAJDetPagoFalSobrEmp (
fiNumFolio INTEGER NOT NULL,
fcOperacion CHAR ( 1 ) NOT NULL,
fiIdTipoDiv SMALLINT NOT NULL,
fiTipoPago TINYINT NOT NULL,
fcIndEfecDoc CHAR ( 1 ) NOT NULL,
fiConcMovto SMALLINT NOT NULL,
fiIdRegional INTEGER NOT NULL,
fiIdOrigenReg INTEGER NOT NULL,
fiNoTransac INTEGER NOT NULL,
fiIdentificador INTEGER NOT NULL,
fnMonto DECIMAL ( 12, 2 ) NOT NULL,
fnMontoPrimerPago DECIMAL ( 12, 2 ) NOT NULL,
fnMontoUltimoPago DECIMAL ( 12, 2 ) NOT NULL,
fcEmpAut CHAR ( 6 ) NOT NULL,
fcEmpVal CHAR ( 6 ) NOT NULL,
fcEmpCaja CHAR ( 6 ) NOT NULL,
fcEmpResp CHAR ( 6 ) NOT NULL,
fdFechaAjuste SMALLDATETIME NOT NULL,
fcSemanasdePago CHAR ( 2 ) NOT NULL,
fnTDC DECIMAL ( 10, 4 ) NOT NULL,

-- Foreign Key
CONSTRAINT FK001CAJDetPagoFalSobrEmp FOREIGN KEY ( fiNumFolio, fcOperacion, fiIdTipoDiv, fiTipoPago, fcIndEfecDoc, fiConcMovto )
REFERENCES dbo.CajDetFalSobrSdosCajero
)

-- Primary Key
ALTER TABLE dbo.CAJDetPagoFalSobrEmp
ADD CONSTRAINT PK001CAJDetPagoFalSobrEmp PRIMARY KEY (fiNumFolio, fcOperacion, fiIdTipoDiv, fiTipoPago, fcIndEfecDoc, fiConcMovto, fiIdRegional, fiIdOrigenReg)

EXEC SPGRANT CAJDetPagoFalSobrEmp

INSERT CAJDetPagoFalSobrEmp
SELECT
fiNumFolio,
fcOperacion,
fiIdTipoDiv,
fiTipoPago,
fcIndEfecDoc,
fiConcMovto,
fiIdRegional,
'0',
fiNoTransac,
fiIdentificador,
fnMonto,
fnMontoPrimerPago,
fnMontoUltimoPago,
fcEmpAut,
fcEmpVal,
fcEmpCaja,
fcEmpResp,
fdFechaAjuste,
fcSemanasdePago,
fnTDC
FROM @vftCAJDetPagoFalSobrEmp
END
GO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:VARIABLES TIPO TABLA

Publicado por Isaías (5072 intervenciones) el 15/12/2006 22:31:12
Cambia tu instruccion por:

exec ('DROP TABLE CAJDetPagoFalSobrEmp')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar