2016年10月9日

SQL Serverにストアドプロシージャを使ってデータを追加する



SQL Serverにストアドプロシージャを使ってデータを追加する方法です。

ちなみに今回もSQL Serverにあらかじめ以下のようなテーブルを作成しています。

テーブル名:T_Animals

列名
[ID] [int] NOT NULL
[Name] [nvarchar](50) NULL
[Type] [nvarchar](50) NULL

格納されてるデータ
ID Name Type
1 たま
2 ピーター うさぎ
3 トム
4 お父さん
5 ふてニャン
6 プー くま
7 ファーファ くま
8 ラスカル アライグマ
9 サトちゃん
10 チーバくん
11 パトラッシュ

また、usp_ins_animals_dataという名前のストアドプロシージャをあらかじめ作っておきます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
USE [TESTDB]
GO
CREATE PROCEDURE [dbo].[usp_ins_animals_data]
 
 @ID int,
 @Name nvarchar(50),
 @Type nvarchar(50)
AS
BEGIN
 SET NOCOUNT ON;
 
 INSERT INTO [dbo].[T_Animals]
  ([ID]
  ,[Name]
  ,[Type])
 VALUES
  (@ID
  ,@Name
  ,@Type)
END

ちなみに@から始まる変数は、パラメータです。

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
string ConnectionString = string.Empty;
ConnectionString = @"Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True";
 
var cnn = new SqlConnection(ConnectionString);
cnn.Open();
 
var cmd = new SqlCommand();
cmd.Connection = cnn;
 
// コマンド文字列の解釈方法を指定
cmd.CommandType = System.Data.CommandType.StoredProcedure;
 
// データソースで実行するストアドプロシージャを指定
cmd.CommandText = "[usp_ins_animals_data]";
cmd.Parameters.Clear();
cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = 12;
cmd.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 50).Value = "バリィさん";
cmd.Parameters.Add("@Type", System.Data.SqlDbType.NVarChar, 50).Value = "鳥";
 
cmd.ExecuteNonQuery();
 
cmd.Dispose();
cnn.Close();

VB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dim ConnectionString As String = String.Empty
ConnectionString = "Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;Integrated Security=True"
 
Dim cnn = New SqlConnection(ConnectionString)
 
cnn.Open()
 
Dim cmd = New SqlCommand()
 
cmd.Connection = cnn
 
'コマンド文字列の解釈方法を指定
cmd.CommandType = System.Data.CommandType.StoredProcedure
 
'データソースで実行するTransact-SQLステートメントを指定
cmd.CommandText = "[usp_ins_animals_data]"
cmd.Parameters.Clear()
cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = 12
cmd.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 50).Value = "バリィさん"
cmd.Parameters.Add("@Type", System.Data.SqlDbType.NVarChar, 50).Value = "鳥"
 
'CommandTextをConnectionに送信し、SqlDataReaderを構築
cmd.ExecuteNonQuery()
 
cmd.Dispose()
cnn.Close()

基本的には、直接SQL文を書く方法と変わりません。
違うのは、CommandType の指定方法と、CommandText にストアドプロシージャ名を指定するところです。

結果をManagement Studioで見るとこのようになります。





スポンサーリンク



Follow Me on Pinterest
Clip to Evernote