2

環境内で特定のトランザクションが発生するまで、空の結果を返す有効な SQL 選択があります。

空のデータセットではなく 0 を返すことを可能にする、SQL 自体で利用できるものはありますか? isNULL('', 0) 機能に似ています。明らかに私はそれを試しましたが、うまくいきませんでした。

PS。悲しいことに、私はデータベースや環境にアクセスできません。これらのクエリを実行するエージェントがインストールされているため、SQL だけでこの問題を解決することに制限されています。

参考までに: 「条件」が満たされていない場合 (たとえば、LockCookie='777777777' の場合) を選択して実行します。その条件が満たされない場合、結果は空になります。ただし、ある時点で、発生する一連の操作/タスクに基づいてクエリが成功します。しかし、そのイベントが発生するまでは、0 を返したいと思います。

4

3 に答える 3

3

結果を一時テーブルに保存して確認でき@@rowcountます。

select ID
into #T
from YourTable
where SomeColumn = @SomeValue

if @@rowcount = 0
  select 0 as ID
else
  select ID
  from #T

drop table #T

これを一時テーブルのない1つのクエリとして使用する場合は、1行のみのダミーテーブルに対してクエリをラップできます。outer apply

select isnull(T.ID, D.ID) as ID
from (values(0)) as D(ID)
  outer apply
    (
      select ID
      from YourTable
      where SomeColumn = @SomeValue        
    ) as T
于 2012-09-17T05:35:56.500 に答える
0

代替方法はコードからであり、DataSetのカウントを確認できます。

DsData.Tables[0].Rows.count > 0
于 2012-09-17T05:34:32.077 に答える
-1

クエリが条件に一致することを確認してください

于 2012-09-17T05:31:13.977 に答える