Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daisukenishino2/a97e2017a0c683d2c858e39741b63949 to your computer and use it in GitHub Desktop.
Save daisukenishino2/a97e2017a0c683d2c858e39741b63949 to your computer and use it in GitHub Desktop.
Open棟梁の汎用Daoを使用したストアド実行サンプル
-- ユーザー定義テーブル型
CREATE TYPE [dbo].[IntValueTableType] AS TABLE ([Value] INT NULL);
GO
-- ストアドプロシージャ
CREATE PROCEDURE [dbo].[SummaryValueProc]
-- 入力パラメタ
@InPut int,
-- 出力パラメタ
@OutPut int OUTPUT,
-- テーブル値パラメタ
@Values IntValueTableType READONLY
AS
BEGIN
-- 出力パラメタ
SELECT @OutPut = SUM(Value) FROM @Values;
-- 結果セット * 2
SELECT * FROM [dbo].[Shippers];
SELECT * FROM [dbo].[Suppliers];
-- 戻り値
RETURN @InPut * 2;
END ;
GO
TestReturnValue testReturn = new TestReturnValue();
this.ReturnValue = testReturn;
// ↓業務処理-----------------------------------------------------
DataTable dt = null;
DataRow row = null;
CmnDao cmnDao = new CmnDao(this.GetDam(), CommandType.StoredProcedure);
cmnDao.SQLText = "dbo.SummaryValueProc";
cmnDao.SetParameter("InPut", 7, null, 0, ParameterDirection.Input);
cmnDao.SetParameter("OutPut", null, SqlDbType.Int, 0, ParameterDirection.Output);
cmnDao.SetParameter("Return", null, SqlDbType.Int, 0, ParameterDirection.ReturnValue);
dt = new DataTable();
dt.Columns.Add("Values", typeof(int));
row = dt.NewRow();
row[0] = 1;
dt.Rows.Add(row);
row = dt.NewRow();
row[0] = 2;
dt.Rows.Add(row);
cmnDao.SetParameter("Values", dt, SqlDbType.Structured);
IDataReader idr = cmnDao.ExecSelect_DR();
DataTable dt1 = new DataTable();
dt1.Load(idr);
DataTable dt2 = new DataTable();
dt2.Load(idr);
int i = (int)cmnDao.GetParameter("OutPut");
int j = (int)cmnDao.GetParameter("Return");
@daisukenishino2
Copy link
Author

daisukenishino2 commented Aug 7, 2018

概要

上記サンプルは、以下の要素を含んでいます。

  • 複数結果セットの取得
  • パラメタ
    • 入力パラメタ
    • 出力パラメタ
    • 戻り値
    • テーブル値パラメタ

実行方法

参考

@daisukenishino2
Copy link
Author

daisukenishino2 commented Sep 6, 2018

補足

public abstract void SetParameter(string parameterName, object obj, object dbTypeInfo, int size, ParameterDirection paramDirection);

SetParameter() メソッドの int size 引数 に -1 を指定すると、 null指定と同じ結果になる。
https://github.com/OpenTouryoProject/OpenTouryo/blob/master/root/programs/C%23/Frameworks/Infrastructure/Public/Db/DamSqlSvr.cs#L521

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment