Ich habe eine Prozedur in T-SQL geschrieben, die Fehlercount basierend auf Statuscode, Geschäftsjahr usw. zurückgibt, aber es hat 3 Stück beteiligt: 1. es Gibt den inneren Join von 2 Tabellen zurück, um selektive Spalten zu ziehen. 2. Eine case-Anweisung mit mehreren Wertmöglichkeiten für coloffset 3. Funktion, um errorcount zurückzugeben.T-SQL-Prozedur hat keine Fehler, aber muss verbessert werden
Wenn ich den Code ausführen gibt es Ausgabe mit 3 separaten Tabellen, aber ich habe die Absicht, Fehlercount als einzige Ausgabe zu erhalten. Wie kann ich das erreichen? Das Orakeläquivalent verwendete den Cursor. Muss ich es hier benutzen?
Hier ist der Code:
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
Dank,
Ich sehe nicht, wie dieser Code eine Ausgabe mit 3 Tabellen generieren kann. Es hat nur 2 Auswahlmöglichkeiten. –
Die dritte Tabelle kommt von der Funktion geterrorcount. Ich kann den Code posten – user3147594
In diesem Fall, woher kommt die zweite Tabelle? –