- PR -

テーブル名の取得について

投稿者投稿内容
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2006-08-21 13:12
sp_tables 'table'

これではどうでしょうか。
ダブルクォーテーションで囲むというのが少々気になりましたので。

クエリアナライザ(またはSqlServer ManagingStudio)においても、
実行できましたので大丈夫だとは思います。

似たようなストアドプロシージャ(キー情報の取得)を、DataReaderを通した形で
利用したことがありますので、同様にテーブル情報の取得である
sp_tablesも動作すると思います。
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2006-08-21 15:07
Ahfさん、レスありがとう御座います。

引用:

Ahfさんの書き込み (2006-08-21 13:12) より:
sp_tables 'table'

これではどうでしょうか。
ダブルクォーテーションで囲むというのが少々気になりましたので。

クエリアナライザ(またはSqlServer ManagingStudio)においても、
実行できましたので大丈夫だとは思います。

似たようなストアドプロシージャ(キー情報の取得)を、DataReaderを通した形で
利用したことがありますので、同様にテーブル情報の取得である
sp_tablesも動作すると思います。



sp_tablesで取得は出来たようなのですが、
データの読み出しが出来ませんでした。。
下記のように、やってみたのですが、
『データが入っていません』というような、
エラーが表示されてしまいます。
ただ、クエリアナライザで実行してみたところ
値は、帰ってきます。。
sp_tablesの場合では、取得の仕方が特別なのでしょうか?
通常に、データベースに適当なデータを入れて試したところ
データは、取得できました。

−−−−−
SqlDataReader Reader;

cmd.CommandText = "sp_tables @table_type='table'";
Reader = cmd.ExecuteReader();

Reader.Read();
test.text = Reader.GetString(0); ← データが何もありません。
−−−−−

御願いいたします。

[ メッセージ編集済み 編集者: ken 編集日時 2006-08-21 15:08 ]
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2006-08-22 13:04
kenさん大変申し訳ありません。
sp_tablesのパラメータを間違っておりました。
テーブル種別だけはダブルクォートで囲むという、最初にkenさんの言われた方法が正解でした。失礼いたしました。

なお、実際にこちらの環境にてSqlDataReaderを利用してsp_tablesを実行して
みたところ、こちらではうまく結果が取得できました。
その際のSQL文は次のようにして実行しております。

"sp_tables @table_type = " _
+ ControlChars.Quote + "'table'" + ControlChars.Quote

当方Vb.Netなため次のようなロジックにて確認してあります。

(接続までは省略)
Dim result As System.Data.SqlClient.SqlDataReader

(SqlCommandクラスのExecuteReaderメソッドを実行)

If result.Read Then
Console.WriteLine("1:" + result.GetSqlString(0))
Console.WriteLine("2:" + result.GetString(0))
Else
Console.WriteLine("EOF")
End If

念のため、ということで(1)と(2)双方確認してみましたが、どちらの
方法でも結果セットより取得できました。
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2006-08-22 14:30
Ahfさん、レスありがとうございます。
お手数かけて、すみません。

こちらも、レスを参考にして

−−−−−−−
SELECT *
FROM sysobjects
WHERE (xtype = 'U')and(uid = '5')
−−−−−−−
上記のやり方で、うまく出来たところです。
Ahfさんの方法でも、試してみたいと思います。

ありがとう御座いました。
また、よろしく御願いいたします。

[ メッセージ編集済み 編集者: ken 編集日時 2006-08-22 14:32 ]

スキルアップ/キャリアアップ(JOB@IT)