Hola a todos!
Estoy aprendiendo a usar los store procedures de SQLServer 2000... estoy migrando unos SP de Oracle a SQLServer 2000, pero me tope con el problema de SQLCODE ... me marca error y la verdad no tengo idea de porque... no se en donde se debe declarar como variables o que hay que hacer... pego el código de mi SP a ver si me pueden decr que es lo que me falta para que no me marque que no reconoce la variable...
CREATE PROCEDURE CARGAANEXO5I
@idfuncionario integer
AS
DECLARE @Descripcion VARCHAR(50);
DECLARE @Marca VARCHAR(20);
DECLARE @Color VARCHAR(20);
DECLARE @Matplaca VARCHAR(20);
DECLARE @Noserie VARCHAR(20);
DECLARE @Edofisico VARCHAR(20);
DECLARE @Nocheque VARCHAR(20);
DECLARE @Nofactura VARCHAR(15);
DECLARE @Proveedor VARCHAR(50);
DECLARE @Costo VARCHAR(20);
DECLARE @IME VARCHAR(35);
DECLARE @Observaciones VARCHAR(100);
DECLARE @DescripcionError VARCHAR(1);
DECLARE @RegACargar NUMERIC(6);
DECLARE @RegError NUMERIC(6);
DECLARE @nValor NUMERIC(22,2);
DECLARE Carga CURSOR FOR
SELECT
Descripcion,
Marca,
Color,
Matplaca,
Noserie,
Edofisico,
Nocheque,
Nofactura,
Proveedor,
Costo,
IME,
Observaciones
FROM PasoAnexo5I
WHERE IdFuncionario = @IdFuncionario;
Begin
UPDATE ANEXO5I
SET UltimaCarga = 0
WHERE UltimaCarga = 1 AND IdFuncionario = @IdFuncionario;
SET @RegACargar = 0;
SET @RegError = 0;
DELETE FROM ErrAnexo5I
WHERE IdFuncionario = @IdFuncionario;
OPEN Carga;
FETCH Next From Carga INTO
@Descripcion,
@Marca,
@Color,
@Matplaca,
@Noserie,
@Edofisico,
@Nocheque,
@Nofactura,
@Proveedor,
@Costo,
@IME,
@Observaciones;
WHILE @@FETCH_STATUS = 0
BEGIN
set @RegACargar = @RegACargar + 1
IF LTRIM(@Costo) IS NULL
begin
set @Costo = '0';
END
SET @Costo = REPLACE(@Costo, ',', '');
SET @Costo = REPLACE(@Costo, '$', ' ');
IF (ISNUMERIC(@Costo)=1)
begin
-- nValor := CAST(Valor AS NUMERIC);
-- Valor := SUBSTR(LTRIM(CAST(nValor AS VARCHAR2)), 1, 20);
INSERT INTO Anexo5I
(IdFuncionario ,
Descripcion ,
Marca ,
Color ,
Matplaca ,
Noserie ,
Edofisico ,
Nocheque ,
Nofactura ,
Proveedor ,
Costo ,
IME ,
Observaciones ,
UltimaCarga)
VALUES
( @IdFuncionario ,
LTRIM(RTRIM(@Descripcion)) ,
LTRIM(RTRIM(@Marca)) ,
LTRIM(RTRIM(@Color)) ,
LTRIM(RTRIM(@Matplaca)) ,
LTRIM(RTRIM(@Noserie)) ,
LTRIM(RTRIM(@Edofisico)) ,
LTRIM(RTRIM(@Nocheque)) ,
LTRIM(RTRIM(@Nofactura)) ,
LTRIM(RTRIM(@Proveedor)) ,
@Costo ,
LTRIM(RTRIM(@IME)) ,
LTRIM(RTRIM(@Observaciones)) ,
1
);
IF (SQLCODE <> 0)
BEGIN
Set @RegError = @RegError + 1;
Set @DescripcionError = SUBSTRING(SQLERRM,1,100);
INSERT INTO ErrAnexo5I
( IdFuncionario ,
Descripcion ,
Marca ,
Color ,
Matplaca ,
Noserie ,
Edofisico ,
Nocheque ,
Nofactura ,
Proveedor ,
Costo ,
IME ,
Observaciones ,
DescripcionError
)
VALUES
(@IdFuncionario ,
@Descripcion ,
@Marca ,
@Color ,
@Matplaca ,
@Noserie ,
@Edofisico ,
@Nocheque ,
@Nofactura ,
@Proveedor ,
@Costo ,
@IME ,
@Observaciones ,
@DescripcionError);
END;
END;
ELSE
BEGIN
Set @RegError = @RegError + 1;
INSERT INTO ErrAnexo5I
( IdFuncionario ,
Descripcion ,
Marca ,
Color ,
Matplaca ,
Noserie ,
Edofisico ,
Nocheque ,
Nofactura ,
Proveedor ,
Costo ,
IME ,
Observaciones ,
DescripcionError )
VALUES
( @IdFuncionario ,
@Descripcion ,
@Marca ,
@Color ,
@Matplaca ,
@Noserie ,
@Edofisico ,
@Nocheque ,
@Nofactura ,
@Proveedor ,
@Costo ,
@IME ,
@Observaciones ,
'Costo debe de ser Numérico' );
END;
FETCH Next From Carga
END
INSERT INTO ANEXO5I (IDFUNCIONARIO, DESCRIPCION, MARCA, COLOR,ULTIMACARGA) VALUES (@idfuncionario,'TEXTO DE PRUEBA','COMPU','VERDE',1)
end
GO
puse en negrita y en grande la ubicacion en donde quiero hacer referencia a la variable SQLCODE... ojalá me puedan ayudar...
Gracias