2011-07-03 13 views
1

私はこの質問が何度も尋ねられているが、私はPROのSQLではないので、私は少し助けが必要です知っている。ストアドプロシージャ内の配列

私は2つのテーブル - PersonContactNumberを持っています。私は保存するたびにContactNumberテーブルにすべて挿入する必要がある多くの連絡先番号を人が持つことができます。私はPerson idと私は挿入時に自動的に生成される連絡先番号の配列/コレクションを持つことを考えていた。

私が助けを求めているのは、どのように達成できますか?私がネット上で見つけたソリューションはすべてXML /文字列区切り文字を使用していますが、私の場合は動作しません。あるいは、それは可能ですが、これを自分のコードに組み込む方法が正確にはわかりません。

解決策がある場合は、コードも投稿してください。あなたは「人」の子であるテーブル「ContactNumber」を持って、事前

答えて

2

感謝。つまり、それらをCSV、XMLなどとして保存しないでください。 1行あたり1行

簡易例

人。主キーはPersonID
PersonID, Firstname, Lastname, Gender, ...

NumberTypeです。主キーはNumberTypeです。 "モバイル"、 "ホーム"などのものを格納します。

お問い合わせ番号。

SQL Server 2008には、SQL Serverへの配列を送信するために、テーブル値パラメータを使用することができます。主キーはあなたが人とNumberType
PersonID, NumberTypeID, PhoneNumber

編集の両方が、コメントの後にする外部キーを持っているPERSONID、NumberType
でもあります。最も徹底した記事はErland Sommarskog、また

によって"Arrays and Lists in SQL Server 2008"で、IDENTITY @@を使用しないでください。SCOPE_IDENTITY()これは、クライアントに、サーバ上の両方の既存のCLRユーザー定義型を伴うだろう

+0

私はこれらすべてのテーブルを作成しましたが、まだ問題を解決していません。そこのWebPageから値を取っている人は1 Ph.NumberまたはPh.Numberを持つことができるので、@@ Identityを介して取得する人物IDに対してそのPh.Numbersの配列を保存する必要があります。どのように私はSQLストアドプロシージャのパラメータで配列/コレクションを送信することができます。それらの値を単一のPersonidまたはurの場合、NumberType idに対して保存することができます – Salman

+0

@ user751959:更新された回答 – gbn

関連する問題