0

特定の行を特定の順序で返すように SQL ストアド プロシージャを設定しただけです (重要度の高いものから低いものへ)。

-- 1st Level -> Query a more detailed object...
SELECT ... WHERE something
-- if a result is find, the SP is returning the correct row.
-- if rowcount = 0 then, the SP is returning an empty row 
-- and continues with the next query (less specific than the 1st one).

IF @@ROWCOUNT = 0
BEGIN
SELECT .... WHERE something else... 
 -- Again, if a result exists, the SP returns the correct row, but also 
 -- the result of the 1st query is returned without rows...
 IF @@ROWCOUNT = 0
 BEGIN
 SELECT .... WHERE something else again...
 END
END

空でない行を返す SELECT ステートメントのみを返すオプションはありますか? 空の行を返したくありません...そして、行が最初のクエリの「サブレベル」であるたびに、正しい行の前に空の結果が得られます。

テーブル変数を作成することを考えていました。より良い方法はありますか?

4

1 に答える 1

0

行の不足を探しているので、プロシージャで if/else ステートメントを使用しないでください。何かのようなもの:

If exists(/*firstQuery*/ SELECT ... WHERE something) begin
   SELECT ... WHERE something
end else if exists (/*secondQuery*/ SELECT .... WHERE something else... ) begin
   SELECT .... WHERE something else... 
end else /*Third query*/ begin
    SELECT .... WHERE something else again...
end

何かが存在するかどうかを確認するときは、列を計算したかのように 1 つの列 (ID など) のみを選択する必要があることを覚えておいてください。これにより、手順が遅くなる可能性があります。

于 2012-06-12T22:21:53.803 に答える