zoukankan      html  css  js  c++  java
  • 「stored procedure(ストアドプロシージャ)」SP-sample1

    USE [APPLICATION_DEV]
    GO
    /****** Object:  StoredProcedure [dbo].[SPAA_SEL_INFO_LIST]    Script Date: 12/08/2014 14:49:58 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- ==========================================================================================
    -- $Id: dbo.SPAA_SEL_INFO_LIST.StoredProcedure.sql 1063 2012-01-13 08:57:33Z ubukata $
    -- Create date : 2011/11/07
    -- Description : お知らせ取得
    --             : 担当者コードから、申請者/申請者上長向け/事務局向けのお知らせ内容を取得する
    --             : 事務局レコードの必要有無をフラグにしているのは、システム管理者が事務局お知らせを取得するように考慮したため
    --             : ===== 2012/01/13 #158 =====
    --             : ・差し戻し系ステータスでの色変更のため、ステータスNoも返すように変更
    -- ==========================================================================================
    ALTER PROCEDURE [dbo].[SPAA_SEL_INFO_LIST](
          @stf_code        CHAR(5)                -- 担当者コード
         ,@secretariat_flg    CHAR(1)    = '1'    -- 事務局お知らせが必要か?
    ) AS
    BEGIN
        --範囲絞込み用の日付を作成する
    
        DECLARE @NOW DATETIME;
        SET @NOW = GETDATE();
    
        --開始日
        DECLARE @STA_DATE DATETIME;
        SET @STA_DATE = convert(datetime,convert(char(8),DATEADD(day,-7,getdate()),112),112);
    
        --終了日
        DECLARE @END_DATE DATETIME;
        SET @END_DATE = convert(datetime,convert(char(8),DATEADD(day,+7,getdate()),112),112);
    
        SELECT
             INFO_LIST.APPLI_NO
            ,INFO_LIST.MATERIALS_NM_KNJ
            ,INFO_LIST.UPD_DATE
            ,INFO_LIST.STATUS_NO
            ,STAT.STATUS_NAME_2
        FROM (
            --検索:自分向け
            SELECT
                 APPL.APPLI_NO
                ,APPL.MATERIALS_NM_KNJ
                ,APPL.UPD_DATE
                ,APPL.STATUS_NO
            FROM
                --申請
                TBAATR_APPLICATION AS APPL
                INNER JOIN (
                    --自分が申請者
                    SELECT
                         APPLI_NO
                        ,REVISION_NO
                    FROM
                        TBAATR_APPLICATION
                    WHERE
                        DEL_FLG = '0'
                    AND    APPLICANT_STF_CODE = @stf_code
                    --自分が上長
                    UNION
                    SELECT
                         APPLI_NO
                        ,REVISION_NO
                    FROM
                        TBAATR_APPLICATION
                    WHERE
                        DEL_FLG = '0'
                    AND    SUPERIOR_STF_CODE = @stf_code
                ) AS APPL_OWN
                ON (APPL.APPLI_NO = APPL_OWN.APPLI_NO
                AND APPL.REVISION_NO = APPL_OWN.REVISION_NO)
            WHERE
                APPL.DEL_FLG = '0'
            AND    APPL.UPD_DATE BETWEEN @STA_DATE AND @END_DATE
            --次ステータスが、申請者がアクションを起こすべきステータスNo
            --または、次ステータスが、申請者上長がアクションを起こすべきステータスNo
            AND APPL.STATUS_NO IN (
                --次ステータスが、申請者がアクションを起こすべきステータスNo
                 '10'    --作成中
                ,'22'    --上長差し戻し
                ,'34'    --事務局差し戻し
                ,'41'    --審議結果:許可
                ,'42'    --審議結果:条件付許可
                ,'43'    --審議結果:留保
                ,'53'    --事務局差し戻し
                ,'54'    --委員長許可
                ,'55'    --委員長差し戻し
                ,'72'    --公開差し戻し
                --または、次ステータスが、申請者上長がアクションを起こすべきステータスNo
                ,'11'    --上長申請中
                ,'12'    --上長再申請中
            )
    
            UNION ALL
            --検索:事務局向け
            SELECT
                 APPL.APPLI_NO
                ,APPL.MATERIALS_NM_KNJ
                ,APPL.UPD_DATE
                ,APPL.STATUS_NO
            FROM
                --申請
                TBAATR_APPLICATION AS APPL
            WHERE
                APPL.DEL_FLG = '0'
            AND    APPL.UPD_DATE BETWEEN @STA_DATE AND @END_DATE
            AND @secretariat_flg = '1'
            --次ステータスが、事務局がアクションを起こすべきステータスNo
            AND APPL.STATUS_NO IN (
                 '21'    --上長承認済み
                ,'31'    --事務局受理(未判定)
                ,'32'    --事務局受理(審議Ⅰ、Ⅱ)
                ,'33'    --事務局受理(事前審議)
                ,'51'    --再提出中
                ,'52'    --事務局受理(再提出)
                ,'61'    --完成品確認依頼中
            )
        ) AS INFO_LIST
        --申請ステータスマスタ
        INNER JOIN TBAAMS_STATUS AS STAT
        ON(INFO_LIST.STATUS_NO = STAT.STATUS_NO)
    
        ORDER BY
            INFO_LIST.UPD_DATE DESC
        ;
    END
    View Code
    USE [APPLICATION_DEV]
    GO
    /****** Object:  StoredProcedure [dbo].[SPAA_SEL_INFO_STATUS_LIST]    Script Date: 12/08/2014 15:00:16 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- ==========================================================================================
    -- $Id: dbo.SPAA_SEL_INFO_STATUS_LIST.StoredProcedure.sql 1063 2012-01-13 08:57:33Z ubukata $
    -- Create date : 2011/11/07
    -- Description : 申請ステータスリスト取得
    --             : 担当者コードから申請ステータスのリストを取得する
    --             : ===== 2011/11/30 #16 =====
    --             : 作成中は事務局でも申請者自身で無い限りは表示しない
    --             : ===== 2012/01/13 #158 =====
    --             : ・差し戻し系ステータスでの色変更のため、ステータスNoも返すように変更
    -- ==========================================================================================
    ALTER PROCEDURE [dbo].[SPAA_SEL_INFO_STATUS_LIST](
         @stf_code                CHAR(5)        -- 担当者コード
        ,@secretariat_flg        CHAR(1)        -- 事務局担当者フラグ
    ) AS
    BEGIN
    
        --検索
        SELECT
             APPL.APPLI_NO
            ,APPL.STATUS_NO AS STATUS_NO
            ,STAT.STATUS_NAME_1
            ,DG.DRUG_NM_KNJ AS DRUG_NAME
            ,STF.STF_NM_KNJ AS APPLICANT_STF_NAME
            ,APPL.MATERIALS_NM_KNJ
            ,MAT.MATERIALS_NM_KNJ AS MATERIALS_CODE_NAME
            ,COMM.COMMITTEE_NO
            --20141022:KAIYO:MOD:START
            ,APPL.APPLICATION_DATE
            --20141022:KAIYO:MOD:END
        FROM
            --申請
            TBAATR_APPLICATION AS APPL
            INNER JOIN (
                --自分が申請者
                SELECT
                     APPLI_NO
                    ,REVISION_NO
                FROM
                    TBAATR_APPLICATION
                WHERE
                    DEL_FLG = '0'
                AND    APPLICANT_STF_CODE = CASE WHEN @secretariat_flg='1' THEN APPLICANT_STF_CODE ELSE @stf_code END
                --自分が上長
                UNION
                SELECT
                     APPLI_NO
                    ,REVISION_NO
                FROM
                    TBAATR_APPLICATION
                WHERE
                    DEL_FLG = '0'
                AND    SUPERIOR_STF_CODE = CASE WHEN @secretariat_flg='1' THEN SUPERIOR_STF_CODE ELSE @stf_code END
            ) AS APPL_OWN
            ON (APPL.APPLI_NO = APPL_OWN.APPLI_NO
            AND APPL.REVISION_NO = APPL_OWN.REVISION_NO)
            --申請ステータスマスタ
            INNER JOIN TBAAMS_STATUS AS STAT
            ON(APPL.STATUS_NO = STAT.STATUS_NO)
            --審査結果
            LEFT OUTER JOIN (SELECT * FROM TBAATR_INSPECTION_RESULT WHERE DEL_FLG = '0') AS INS_RESULT
            ON (APPL.APPLI_NO = INS_RESULT.APPLI_NO
            AND APPL.REVISION_NO = INS_RESULT.REVISION_NO)
            --委員会審議申請
            LEFT OUTER JOIN (SELECT * FROM TBAARS_COMMITTEE_APPLICATION WHERE DEL_FLG = '0') AS COMM_APPL
            ON (APPL.APPLI_NO = COMM_APPL.APPLI_NO
            AND APPL.REVISION_NO = COMM_APPL.REVISION_NO)
            --委員会
            LEFT OUTER JOIN (SELECT * FROM TBAAMS_COMMITTEE WHERE DEL_FLG = '0') AS COMM
            ON (COMM_APPL.COMMITTEE_NO = COMM.COMMITTEE_NO)
            --薬剤マスタ
            LEFT OUTER JOIN TBCMRS_DRUG_INFO AS DG
            ON (APPL.DRUG = DG.DRUG_CODE)
            --担当者
            LEFT OUTER JOIN TBCMRS_STF_INFO AS STF
            ON (APPL.APPLICANT_STF_CODE = STF.STF_CODE)
            --資材区分情報
            LEFT OUTER JOIN MATERIALS_INFO AS MAT
            ON (APPL.MATERIALS_CODE = MAT.MATERIALS_CODE)
        WHERE
            APPL.DEL_FLG = '0'
        --完了状態以外の全てのステータス
        AND (APPL.STATUS_NO IN (
             '11'    --上長申請中
            ,'12'    --上長再申請中
            ,'21'    --上長承認済み
            ,'22'    --上長差し戻し
            ,'31'    --事務局受理(未判定)
            ,'32'    --事務局受理(審議Ⅰ、Ⅱ)
            ,'33'    --事務局受理(事前審議)
            ,'34'    --事務局差し戻し
            ,'41'    --審議結果:許可
            ,'42'    --審議結果:条件付許可
            ,'43'    --審議結果:留保
            ,'51'    --再提出中
            ,'52'    --事務局受理(再提出)
            ,'53'    --事務局差し戻し
            ,'54'    --委員長許可
            ,'55'    --委員長差し戻し
            ,'61'    --完成品確認依頼中
            ,'72'    --公開差し戻し
        )
        OR (
            --作成中は自分自身のみ
                APPL.STATUS_NO = '10'
            AND APPL.APPLICANT_STF_CODE = @stf_code
        ))
        ORDER BY
            APPL.APPLI_NO 
        ;
        
    END
    View Code

    .NET

    //     このコードはツールによって生成されました。
    namespace Otsuka.Application.Dal
    {
        using System.Data.Linq;
        using System.Data.Linq.Mapping;
        using System.Data;
        using System.Collections.Generic;
        using System.Reflection;
        using System.Linq;
        using System.Linq.Expressions;
        using System.ComponentModel;
        using System;
        
        
        [System.Data.Linq.Mapping.DatabaseAttribute(Name="APPLICATION")]
        public partial class ApplicationDataContext : System.Data.Linq.DataContext
        {
    private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
    ...........................
            [Function(Name="dbo.SPAA_SEL_INFO_LIST")]
            public ISingleResult<SPAA_SEL_INFO_LIST結果> SPAA_SEL_INFO_LIST([Parameter(DbType="Char(5)")] string stf_code, [Parameter(DbType="Char(1)")] System.Nullable<char> secretariat_flg)
            {
                IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), stf_code, secretariat_flg);
                return ((ISingleResult<SPAA_SEL_INFO_LIST結果>)(result.ReturnValue));
            }
            
            [Function(Name="dbo.SPAA_SEL_INFO_STATUS_LIST")]
            public ISingleResult<SPAA_SEL_INFO_STATUS_LIST結果> SPAA_SEL_INFO_STATUS_LIST([Parameter(DbType="Char(5)")] string stf_code, [Parameter(DbType="Char(1)")] System.Nullable<char> secretariat_flg)
            {
                IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), stf_code, secretariat_flg);
                return ((ISingleResult<SPAA_SEL_INFO_STATUS_LIST結果>)(result.ReturnValue));
            }
        
    
    }
    View Code


    C#呼び出し

         protected override Dictionary<string, object> Perform()
            {
    
                string strStfCode = Request[REQUEST_KEY_STAFF_CODE] as string;
    
                if (strStfCode == null)
                {
                    strStfCode = String.Empty;
                }
    
                string strSecretariat = Request[REQUEST_KEY_NEED_INFOMATION_4_SECRETARIAT] as string ;
    
                if (strSecretariat == null)
                {
                    strSecretariat = "1";
                }
    
                // お知らせの検索
                var lstInfo = DataContext.SPAA_SEL_INFO_LIST(strStfCode, strSecretariat.ToCharArray ()[0] ).ToList();
    
                DateTime now = DateTime.Now;
    
                // お知らせ(委員会)
                TBAAMS_COMMITTEE committee = (from row in DataContext.TBAAMS_COMMITTEE
                                                    where row.DEL_FLG == '0'
                                                    && row.HOLD_DATE.CompareTo(now.ToString("yyyyMMdd")) >= 0
                                                    orderby row.HOLD_DATE
                                                    select row).FirstOrDefault();
    
                if (committee != null && committee.HOLD_INFORM_FLG == '1')
                {
                    //直近の委員会で開催案内が出ている場合、追加する
                    SPAA_SEL_INFO_LIST結果 comRow = new SPAA_SEL_INFO_LIST結果();
    
                    comRow.APPLI_NO = null;
                    comRow.MATERIALS_NM_KNJ = null;
                    // 画面表示したくない項目なので、値を設定しない
                    //comRow.UPD_DATE = null;
                    comRow.STATUS_NO = null;
                    comRow.STATUS_NAME_2 = null;
                    comRow.COMMITTEE_NO = committee.COMMITTEE_NO;
                    comRow.HOLD_DATE = StringUtility .ConvertDateString(committee.HOLD_DATE);
    
                    lstInfo.Insert(0, comRow);
                }
    
                //申請ステータスの検索
                var lstStatus = DataContext.SPAA_SEL_INFO_STATUS_LIST(strStfCode, char.Parse (strSecretariat)).ToList();
    
                Dictionary<string, object> response = new Dictionary<string, object>();
                response.Add(RESPONSE_KEY_INFOMATION_LIST, lstInfo);
                response.Add(RESPONSE_KEY_STATUS_LIST, lstStatus);
    
                return response;
            }
    View Code

    参考SQL存储过程实例详解

    存储过程语法及实例

  • 相关阅读:
    nowcoderD Xieldy And His Password
    Codeforces681D Gifts by the List
    nowcoder80D applese的生日
    Codeforces961E Tufurama
    Codeforces957 Mahmoud and Ehab and yet another xor task
    nowcoder82E 无向图中的最短距离
    nowcoder82B 区间的连续段
    Codeforces903E Swapping Characters
    Codeforces614C Peter and Snow Blower
    Codeforces614D Skills
  • 原文地址:https://www.cnblogs.com/haiy/p/4150998.html
Copyright © 2011-2022 走看看