C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 【SQLServer2005】ストアドプロシージャについて


(過去ログ 34 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■16635 / inTopicNo.1)  【SQLServer2005】ストアドプロシージャについて
  
□投稿者/ OOO (4回)-(2008/04/09(Wed) 09:00:01)

分類:[データベース全般] 

お世話になります。

【Visual Studio2005】
【SQLServer2005】
にてストアドプロシージャ(SP)の開発をしております。

今回はSPについての質問になります。
例えば、一つのSP内に結果セットが二つ存在する場合に画面側に返す時、
アウトプットパラメータとして、データセットを指定することはできたりするのでしょうか?
下記の例でいうと二つ結果セットが生まれますが、画面側にどのように返せばよいかが不明な状態です。

基本的なことかもしれませんが、どうかご教授お願いいたします。


例:
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id('dbo.SP10060102'))
   DROP procedure dbo.SP10060102
GO

SET QUOTED_IDENTIFIER  ON
SET ANSI_NULLS  ON
GO

CREATE PROCEDURE TEST1
/*--------------------------------------------------------------------------------
  < Explanation >
----------------------------------------------------------------------------------
    【システム名】社内システム
    【作成者】OOO
    【作成日】2008/04/09
    【処理概要】データを取得する。

    【修正履歴】

----------------------------------------------------------------------------------
  < Arguments Section >
--------------------------------------------------------------------------------*/
         @Ng                                    TypNengetsu6            -- 年月         
        ,@HjnCd                                 TypHoujinCd             -- 法人コード
        ,@pErrKbn                               TypCheck        OUTPUT  -- エラー区分 "0":存在しない "1":存在する

AS
BEGIN
/*--------------------------------------------------------------------------------
  < Valuables Section >
--------------------------------------------------------------------------------*/
    DECLARE  @error         INT
    DECLARE  @rowcount      INT
/*--------------------------------------------------------------------------------
    < Main Code Section >
--------------------------------------------------------------------------------*/
       -- 一つ目の結果セット
        SELECT         
                 H1.HjnCd                               AS      HjnCd                   -- 法人コード
                ,H2.HjnMe_Ryakushou                     AS      HjnMe_Ryakushou         -- 法人名称(略称)
                ,H1.Ng                                  AS      Ng                      -- 年月         
                ,H1.UkZgkrkDk                           AS      UkZgkrkDk               -- 売掛前月繰越高               
                ,H1.UaKei                               AS      UaKei                   -- 売上計               
                ,H1.HkeKn                               AS      HkeKn                   -- 振替金額             
                ,H1.ChouseiKn                           AS      ChouseiKn               -- 調整金額             
                ,H1.SousaiKn                            AS      SousaiKn                -- 相殺金額             
                ,H1.NkKnGkn                             AS      NkKnGkn                 -- 入金金額現金         
                ,H1.NkKnKgt                             AS      NkKnKgt                 -- 入金金額小切手               
                ,H1.NkKnGinHkm                          AS      NkKnGinHkm              -- 入金金額銀行振込     
                ,H1.NkKnYbnHke                          AS      NkKnYbnHke              -- 入金金額郵便振替     
                ,H1.NkKnUketoriTg                       AS      NkKnUketoriTg           -- 入金金額受取手形     
                ,H1.TgZgkrkDk                           AS      TgZgkrkDk               -- 手形前月繰越高               
                ,H1.UkTgtZn                             AS      UkTgtZn                 -- 売掛当月残高         
                ,H1.SakihidukeKgtTgtZn                  AS      SakihidukeKgtTgtZn      -- 先日付小切手当月残高 
                ,H1.UkZnUchiTsjHin                      AS      UkZnUchiTsjHin          -- 売掛残高内通常品     
                ,H1.UkZnUchiTkbHin                      AS      UkZnUchiTkbHin          -- 売掛残高内特別品     
                ,H1.UkZnUchiHsHin                       AS      UkZnUchiHsHin           -- 売掛残高内販促品     
                ,H1.YoshinGendoGk                       AS      YoshinGendoGk           -- 与信限度額           

        FROM    (  DchHoujinbetsuZandakaGenzai AS H1   ( NOLOCK )                       -- 法人別残高(現在残高)
            INNER JOIN
                   MstHoujin AS H2  ( NOLOCK )                                          -- 法人マスタ
                   ON H1.HjnCd = H2.HjnCd
                )
        WHERE
                ((H1.Ng   =   @Ng  ) OR ( @Ng   IS NULL))
          AND   ((H1.HjnCd   =   @HjnCd  ) OR ( @HjnCd   IS NULL))
		
		-- 二つ目の結果セット
		SELECT 
				A1.MMKC
		FROM
				KMNJKL AS A1
		WHERE
				((A1.Ng   =   @Ng  ) OR ( @Ng   IS NULL))
				
	
		
    SELECT  @error      = @@ERROR ,
            @rowcount   = @@ROWCOUNT

    IF @error <> 0      -- エラー
    BEGIN
        RAISERROR (@error,0,1)
        RETURN @error
    END

    IF @ROWCOUNT = 0
        SELECT @pErrKbn = '1'
    ELSE
        SELECT @pErrKbn = '0'

    RETURN @error

END
GO

引用返信 編集キー/
■16639 / inTopicNo.2)  Re[1]: 【SQLServer2005】ストアドプロシージャについて
□投稿者/ Mr.T (219回)-(2008/04/09(Wed) 09:44:53)
Mr.Tです、こんにちは。

No16635 (OOO さん) に返信
> お世話になります。
>
> 【Visual Studio2005】
> 【SQLServer2005】
> にてストアドプロシージャ(SP)の開発をしております。
>
> 今回はSPについての質問になります。
> 例えば、一つのSP内に結果セットが二つ存在する場合に画面側に返す時、
> アウトプットパラメータとして、データセットを指定することはできたりするのでしょうか?
> 下記の例でいうと二つ結果セットが生まれますが、画面側にどのように返せばよいかが不明な状態です。
>

そのまま、Selectで返せますよ。
一つだけの場合は、取得できるんですよね?

DataAdapterとかでやってるなら、こっち
http://www.atmarkit.co.jp/fdotnet/dotnettips/137multisel/multisel.html

DateReaderとかでやってるなら、DataReader.NextResultとかで
次の結果が読めませんか?

引用返信 編集キー/
■16654 / inTopicNo.3)  Re[2]: 【SQLServer2005】ストアドプロシージャについて
□投稿者/ OOO (5回)-(2008/04/09(Wed) 11:37:27)
Mr.Tさん
ご回答いただきありがとうございます。

データセット.データテーブル(1)にて2つ目のデータセットの取得ができました。
参考URLも見させていただきました!

ありがとうございました♪

引用返信 編集キー/
■16713 / inTopicNo.4)  Re[3]: 【SQLServer2005】ストアドプロシージャについて
□投稿者/ osada (13回)-(2008/04/09(Wed) 22:39:49)
No16654 (OOO さん) に返信
> Mr.Tさん
> ご回答いただきありがとうございます。
>
> データセット.データテーブル(1)にて2つ目のデータセットの取得ができました。
> 参考URLも見させていただきました!
>
> ありがとうございました♪
解決済み
引用返信 編集キー/
■16714 / inTopicNo.5)  Re[4]: 【SQLServer2005】ストアドプロシージャについて
□投稿者/ ぽぴ王子 (343回)-(2008/04/09(Wed) 23:21:49)
ぽぴ王子 さんの Web サイト
No16713 (osada さん) に返信

ちょっとちょっと、他人が解決済みチェックつけちゃダメでしょ〜
引用返信 編集キー/
■16801 / inTopicNo.6)  Re[5]: 【SQLServer2005】ストアドプロシージャについて
□投稿者/ OOO (7回)-(2008/04/10(Thu) 18:44:56)
ぽぴ王子さん

すみません。OOOは弊社の人間でして、解決済みを付けさせていただきました。
引用返信 編集キー/
■16817 / inTopicNo.7)  Re[6]: 【SQLServer2005】ストアドプロシージャについて
□投稿者/ ぽぴ王子 (344回)-(2008/04/10(Thu) 23:28:46)
ぽぴ王子 さんの Web サイト
No16801 (OOO さん) に返信

よくわからないんだけど…

OOOさん(質問した人)と、OOOさん(No.6の人)は別人ってことですか?
で、質問者のOOOさんとosadaさんが同じ会社?

うーん…
そんな厳しく言うつもりもないし、別にルールがあるわけでもないから
かまわないんですけども。
なんていうか、自分の質問すら管理できない人間と、他人の名前を語ったり
勝手に解決済みにしちゃう人間がいる会社、っていうのもどうかなあと。

解決チェック外れちゃってるんで、もう一度解決チェックをつけるなら
今度こそ本当のOOOさんにつけていただきたいかも。
まぁ解決済みを無理につけることもないんで、そのままでもいいですが。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -