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

存储过程语法及实例

posted @ 2015-02-25 05:29  neusoft06  阅读(113)  评论(0编辑  收藏  举报
分享到: 更多