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存储过程实例详解

    存储过程语法及实例

  • 相关阅读:
    Jser 设计模式系列之面向对象
    jQuery 2.0.3 源码分析 回溯魔法 end()和pushStack()
    jQuery 2.0.3 源码分析 数据缓存
    jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
    jQuery 2.0.3 源码分析 Deferred概念
    jQuery 2.0.3 源码分析 回调对象
    试试看 ? 离奇古怪的javascript题目
    jQuery 2.0.3 源码分析Sizzle引擎
    设计模式之美:Memento(备忘录)
    设计模式之美:Mediator(中介者)
  • 原文地址:https://www.cnblogs.com/haiy/p/4150998.html
Copyright © 2011-2022 走看看