我需要验证文件名是否已在我的表“TBL_PAGO_DIARIO_Nextel”上传。
开始我已经有一个表格,其中包含我从SSIS上传的文件名称
表格如下:
tbl_filenames
RC196012070801
RC196017080401
我需要验证它们中的每一个“RC196012070801,RC196017080401”,如果它们已经在我的桌子“TBL_PAGO_DIARIO_Nextel”上。 我有想法用商店程序来做,但我不确切知道如何 因为例如如果第一个已经输入表“TBL_PAGO_DIARIO_Nextel”,那么就不应该插入它并只显示一个消息并继续第二个并继续。
我现在正在这样做:
create procedure sp_validateFile_Entel
@nomfile varchar(14)
as
declare @ncant int
select @ncant = count(*) from TBL_PAGO_DIARIO_Nextel where s_Empresa_Code = 'cperu' and s_Nombre_Vol = @nomfile
这只是接受一个文件,我不需要它。我需要一对一阅读并验证其中一些是否收费请帮助我。
感谢!!!
答案 0 :(得分:0)
选项1 如果一个文件不存在,则一次只插入一个文件
IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
@nomfile VARCHAR(14)
AS
BEGIN
--Only insert new record if @nomfile does NOT exist already
IF NOT EXISTS ( SELECT 1 FROM TBL_PAGO_DIARIO_Nextel WHERE s_Empresa_Code = 'cperu' AND s_Nombre_Vol = @nomfile )
BEGIN
INSERT INTO TBL_PAGO_DIARIO_Nextel(
s_Empresa_Code, s_Nombre_Vol
)
VALUES(
'cperu', @nomfile
);
END;
END
选项2 使用现有表[tbl_filenames]
中的数据插入--Create the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
DROP TABLE tbl_filenames;
CREATE TABLE TBL_PAGO_DIARIO_Nextel ( s_Empresa_Code VARCHAR(20), s_Nombre_Vol VARCHAR(14) )
CREATE TABLE tbl_filenames ( FileNames VARCHAR(14))
--Insert some temp values
INSERT INTO dbo.tbl_filenames ( FileNames )
VALUES ('RC196012070801'), ('RC196012070801' )
--Create the Procedure
IF OBJECT_ID('dbo.usp_validateFile_Entel') IS NULL
EXEC ('CREATE PROCEDURE dbo.usp_validateFile_Entel AS RETURN 0;');
GO
ALTER PROCEDURE dbo.usp_validateFile_Entel
--Input Parameters
AS
BEGIN
--Only exist if data doesn't exist already
INSERT INTO TBL_PAGO_DIARIO_Nextel(
s_Empresa_Code, s_Nombre_Vol
)
SELECT 'cperu', T.FileNames
FROM
dbo.tbl_filenames T
WHERE
NOT EXISTS
( SELECT P.s_Nombre_Vol
FROM TBL_PAGO_DIARIO_Nextel P
WHERE P.s_Empresa_Code = 'cperu'
AND P.s_Nombre_Vol = T.FileNames
)
END ;
GO
--Exexute the Procedure
EXEC dbo.usp_validateFile_Entel
--Check the Results in the table
SELECT * FROM TBL_PAGO_DIARIO_Nextel
--Drop the tables
IF OBJECT_ID('TBL_PAGO_DIARIO_Nextel','U') IS NOT NULL
DROP TABLE TBL_PAGO_DIARIO_Nextel;
IF OBJECT_ID('tbl_filenames','U') IS NOT NULL
DROP TABLE tbl_filenames;