0

次のようなストアド プロシージャがあります。

alter procedure [dbo].[carcallvalidation]
@carid nvarchar(100)=null
as
begin
    select count(t.TBarcode) as barcodeCount, t.Paid,t.Status,t.DelDate
    from Transaction_tbl t
    where TBarcode=@carid

    group by t.paid,t.status,t.DelDate

    declare @transid integer=null;
   select @transid= t1.transactID from Transaction_tbl t1 where TBarcode=@carid;
if(select count(k.transactid) from KHanger_tbl k where k.transactid=@transid)>0
begin
return 1
end
end

間違った番号を渡すcaridと、空のテーブルが返されます。T.Barcodeしかし、代わりに0としてカウントしたいと思います。

どうやってやるの?

4

2 に答える 2

0

次に、 where 条件からフィルターを削除する必要があります。

次のストア プロシージャを試してください。

ALTER procedure [dbo].[carcallvalidation111]
@carid nvarchar(100)=null
as
begin
select count(case when t.TBarcode is null or t.TBarcode!=@carid then 0 else 1 end) as cnt,  t.Paid,t.Status,t.DelDate
from Transaction_tbl t
group by t.Paid,t.Status,t.DelDate;

declare @transid integer=null;

select @transid= t1.transactID from Transaction_tbl t1 where TBarcode=@carid;
if(select count(k.transactid) from KHanger_tbl k where k.transactid=@transid)>0
begin
return 1
end
end
于 2013-06-30T06:57:57.193 に答える
0

これを試してみることをお勧めします。

    alter procedure [dbo].[carcallvalidation]
    @carid nvarchar(100)=null,
@countTbar int 
    as
    begin
        select @countTbar=  select count(t.TBarcode) as barcodeCount
        from Transaction_tbl t
        where TBarcode=@carid  group by t.paid,t.status,t.DelDate
 if(@countTbar is null)
    begin
    return 0
    end

        select count(t.TBarcode) as barcodeCount, t.Paid,t.Status,t.DelDate
        from Transaction_tbl t
        where TBarcode=@carid

        group by t.paid,t.status,t.DelDate

        declare @transid integer=null;
       select @transid= t1.transactID from Transaction_tbl t1 where TBarcode=@carid;
    if(select count(k.transactid) from KHanger_tbl k where k.transactid=@transid)>0
    begin
    return 1
    end
    end
于 2013-06-30T07:04:48.873 に答える