質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

1803閲覧

VBからSQLserverのSPへ配列を投げられない」

sala

総合スコア17

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/03/25 00:51

VBからSQLserverのSPへ配列を投げるテストをしています。
うまくいきません。

以下がソースです。

SQLServer

1drop type MeishoType; 2go 3create type MeishoType as table( 4 id int, 5 name varchar 6); 7go 8drop table Meisho; 9go 10create table Meisho( 11 id int, 12 name varchar 13); 14go 15drop procedure MeishoIns; 16go 17create procedure MeishoIns 18 @MeishoTableValues MeishoType readonly 19as 20begin 21 insert into Meisho(id, name) select id, name from @MeishoTableValues 22end 23go

VB

1Private Sub CallSP(sender As Object, e As EventArgs) Handles Button2.Click 2 3 Dim cmd As New SqlClient.SqlCommand 4 Try 5 6 Dim dt As New DataTable 7 dt.Columns.Add("id", GetType(Integer)) 8 dt.Columns.Add("name", GetType(String)) 9 dt.Rows.Add(1, "阿部") 10 dt.Rows.Add(2, "加藤") 11 dt.Rows.Add(3, "佐々木") 12 13 cmd.Connection = Cn 14 cmd.CommandText = "MeishoIns" 15 cmd.CommandType = CommandType.StoredProcedure 16 cmd.Parameters.Clear() 17 cmd.Parameters.Add("@MeishoTableValues", SqlDbType.Structured) 18 cmd.Parameters("@MeishoTableValues").TypeName = "MeishoType" 19 cmd.Parameters("@MeishoTableValues").Value = dt 20 If Cn.State = ConnectionState.Closed Then Cn.Open() 21 cmd.ExecuteNonQuery() 22 23 Finally 24 cmd.Dispose() 25 26 End Try 27 28End Sub

こんなエラーになります。
イメージ説明

教えてくださすと嬉しいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQLServer

1create type MeishoType as table( 2 id int, 3 name varchar 4); 5 6create table Meisho( 7 id int, 8 name varchar 9);

varchar(1)のテーブルになっているためだと思います。
定義で適切な長さを指定してみてください。

投稿2020/03/25 01:48

Masakin

総合スコア192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sala

2020/03/25 02:01

まさにその通りでした。 省略したらmaxになると思い込んでいました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問