2017-08-04 55 views
-1

我有以下存储过程:存储过程输入参数的验证

CREATE procedure usp_insert_abm_tctrol_ch 
    (@cod_suc numeric(3), 
    @id_bco numeric(3), 
    @cod_banco numeric(3), 
    @nro_cta VARCHAR(15), 
    @fec_activa SMALLDATETIME, 
    @fec_inactiva SMALLDATETIME, 
    @nro_ch_desde numeric(9), 
    @nro_ch_hasta numeric(9), 
    @ult_nro_ch numeric(9), 
    @sn_ch_inicio numeric(3), 
    @tipo_chequera VARCHAR(2), 
    @sn_estadoi_ch INT, 
    @sn_estadof_ch INT) 
as 
begin 
    declare @error varchar(500) 

    begin try 
    begin tran 
     set @error = '' 
     set @error = 'hubo un error' 

     if @error <> '' 
     begin  
      RAISERROR(@Error, 16, 10) 
     end 

     insert into tctrol_ch (cod_suc, id_bco, cod_banco, nro_cta, fec_activa, fec_inactiva, nro_ch_desde, nro_ch_hasta, ult_nro_ch, sn_ch_inicio, tipo_chequera, sn_estadoi_ch, sn_estadof_ch) 
      select 
       @cod_suc, @id_bco, @cod_banco, @nro_cta, @fec_activa, 
       @fec_inactiva, @nro_ch_desde, @nro_ch_hasta, @ult_nro_ch, 
       @sn_ch_inicio, @tipo_chequera, @sn_estadoi_ch, @sn_estadof_ch 
     commit tran 
    end try 
    begin catch 
     rollback tran 

     declare @Err varchar(max) 

     set @Err = ERROR_MESSAGE() 
     RAISERROR(@Err , 16, 10) 
    end catch 

我想验证的@nro_cta(数帐户)属于当前银行(@id_bco)。我怎样才能做到这一点?

我有一个表“银行”,有一个列名“nro_cta”。我想用if语句来验证它。我是一个初学者存储过程,谢谢!

+0

所以我缩进了你的代码以使它可读 - 注意你如何设置一个变量然后马上测试它?此外,还有一些不完整的陈述 - 这是一大堆代码,没有任何意义。 – Hogan

+0

你会用select语句来做验证。我们不可能帮助你,因为你没有提供关于表格或你想做什么的任何细节。 –

+1

最简单的检查方法是如果银行账户存在是IF EXISTS(SELECT * FROM [bank] WHERE nro_cta = @ nro_cta'。然后你可以在你的if条件中采取一些行动 – Alex

回答

4

你需要添加类似

declare @testbank numeric(3) 

SET @testbank = (SELECT id_bco from Bank WHERE nro_cta = @nro_cta) 

If @testbank <> @id_bco OR @testbank IS NULL 
    BEGIN 
     RAISERROR('Wrong bank', 16, 10) 
    END 

我不能绝对肯定的,因为虽然你说,银行有一个字段nro_cta,你不说,银行的ID叫什么领域,所以我为了一致性,猜测它是id_bco。

同样为了这个工作,我假设id_bco和nro_cta与@id_bco和@nro_cta是相同的数据类型。

+1

如果存在检查会更简单但我也猜测这是沿着他们想要的路线 –

+0

@SeanLange我想用IF EXISTS帐户=帐户和银行=银行(注意你必须有'和'),但后来认为他可能想要如果账户属于不同的银行,只要使用存在只会告诉你存在一些问题:可能是银行不存在,账户不存在或账户存在错误的银行,我试图指出他如果出现错误,我可以通过这种方式获得更多的信息 –

+0

是的,我没有试图暗示这种方法有什么问题,我们都在猜测,因为OP没有提供任何方法 细节。 –