2016-09-22 8 views
-1

状態コード、会計年度などに基づいてerrorcountを返すT-SQLプロシージャを作成しましたが、それには3つの部分があります。 1. it 2つのテーブルの内部結合を返して選択列を引き出します。 2.コロオフセット用に複数の値が可能なcase文 3. errorcountを返す関数。t-sqlプロシージャにエラーはありませんが、拡張する必要があります

私はコードを実行すると3つの別々のテーブルで出力しますが、私は唯一の出力としてerrorcountを取得しようとしています。どうすればこれを達成できますか?オラクルではカーソルが使用されました。私はここでそれを使う必要がありますか?

ALTER PROCEDURE [hsip].[ErrorCount] (
    @cRegion CHAR(2) ='00', 
    @cState_Code CHAR(2) = '00', 
    @nFY NUMERIC(4,0) = 0, 
    @nREPORT_ID NUMERIC(2,0) = 0, 
    @nSECTION_ID NUMERIC(2,0) = 0, 
    @nSUBSECTION_ID NUMERIC(2,0) = 0, 
    @nDISPLAY_NUMBER NUMERIC(38,0) = 0, 
    @nQUESTION_NUMBER NUMERIC(38,0) = 0, 
    @nQUESTION_PART_NUMBER NUMERIC(38,0) = 0, 
    @suser_id varchar(25) =NULL, 
    @nFY_ST_QUESTION_DTL_TABLE_ID numeric(38,0)) 

AS 

BEGIN 

    SET NOCOUNT ON; 

--declare nfy_st_question_dtl_table_id as integer 

--declare ncolumn_index cursor for 
declare @coloffset as integer 
[email protected] as numeric(38,0) 


select qi.REGION, qi.STATE_CODE, qi.FY, qi.REPORT_ID, qi.SECTION_ID, qi.SUBSECTION_ID, qi.DISPLAY_NUMBER, qi.QUESTION_NUMBER, qd.QUESTION_PART_NUMBER 
from FY_ST_QUESTION_DETAIL qd inner join FY_ST_QUESTION_INFO qi 
on qd.FY_ST_QUESTION_INFO_TABLE_ID = qi.FY_ST_QUESTION_INFO_TABLE_ID 
where qi.region = @cRegion 
     and qi.state_code = @cState_Code 
     and qi.fy = @nFY 
     and qi.report_id = @nREPORT_ID 
     and qi.section_id = @nSECTION_ID 
     and qi.subsection_id = @nSUBSECTION_ID 
     and qi.display_number = @nDISPLAY_NUMBER 
     and qi.QUESTION_NUMBER = @nQUESTION_NUMBER 
     and (QI.REPORTER_ID = @sUSER_ID or 
       QI.DELEGATE_ID = @suser_id or 
       QI.SUB_DELEGATE_ID = @suser_id) 
     and QD.QUESTION_PART_NUMBER = @nQUESTION_PART_NUMBER ; 


     set @coloffset= 
      case 
      when (@nREPORT_ID = 1 and @nQUESTION_NUMBER = 21) then 17 
      when (@nREPORT_ID = 1 and @nQUESTION_NUMBER = 32) then 16 
      when (@nREPORT_ID = 3 and @nQUESTION_NUMBER = 11) then 15 
      when (@nREPORT_ID = 3 and @nQUESTION_NUMBER = 12) then 27 
     end; 

    select [hsip].[getErrorCount](@nFY_ST_QUESTION_DTL_TABLE_ID, 0, @coloffset)as ErrCount;  

END 

おかげで、

+1

このコードが3つのテーブルでどのように出力を生成するかはわかりません。 2つの選択肢しかありません。 –

+0

第3のテーブルは関数geterrorcountから来ています。私はコード – user3147594

+0

を掲示することができますこの場合、2番目のテーブルはどこから来ますか? –

答えて

0

コメントアウトまたは、あなたの出力にはしたくないテーブルを生成するSELECT文を削除します。

は、ここでは、コードです。

+0

申し訳ありませんが、混乱のために。あなたは正しいです、それは2テーブルを返し、出力がエラーカウントになる必要があります。私は戻り値の型の値に混乱していました。もう一度私の悪い.. – user3147594

+0

私はそれが動作することを疑う - 選択ステートメントなしで決定的な関数の出力です - 彼らは - 例えば、2番目の関数呼び出しで使用される変数を変更します。もちろん、その関数のソースを見なければわかりません。 – Hogan

+0

変数を変更するものはテーブルを返さないので、テーブルを返すものが関数の出力にどのように影響するかはわかりません。 –

関連する問題