- PR -

Oracle User_ViewsのTEXT読込

1
投稿者投稿内容
tomi
会議室デビュー日: 2006/02/08
投稿数: 11
投稿日時: 2006-02-14 10:41
Oracle VIEWのSQL文を取得しようと以下のコードを書いたのですが、TEXT内容が
DataGridに表示できませんでした。ウォッチを見るとString ""になっています。
OracleDataReaderで試しに読み込んでみましたが同じでした。

上手く表示させる方法はないのでしょうか。ご教授下さい。

Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
・・・

Dim DBcnn As New OracleConnection
Dim DBcmd As New OracleCommand
Dim StrSQL As String
Dim GetDataSet As New System.Data.DataSet

OraConStr = "user id=" & DBUser
OraConStr = OraConStr & ";data source=" & DBName
OraConStr = OraConStr & ";password=" & DBPass
DBcnn.ConnectionString = OraConStr
DBcnn.Open()
DBcmd.Connection = DBcnn

StrSQL = "SELECT OWNER,VIEW_NAME,TEXT FROM DBA_VIEWS"

Dim OraDA As Oracle.DataAccess.Client.OracleDataAdapter = New Oracle.DataAccess.Client.OracleDataAdapter(StrSQL, DBcnn)
OraDA.Fill(GetDataSet)
DBcnn.Close()

DataGrid1.DataSource = GetDataSet.Tables(0)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-14 11:41
まず、問題の切り分けをしましょう。
とりあえず、その SQL コマンドで期待した結果が取得できているのか、
SQL Plus などで確認してみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-02-14 12:49
SQLコマンド自体は正しいのですが
接続するユーザにより実行できたりできなかったりしますよ。
#なんせDBA_VIEWSですから。

接続するユーザでSQL*Plusから接続し、
SQLが実行できるかも確認してください。
tomi
会議室デビュー日: 2006/02/08
投稿数: 11
投稿日時: 2006-02-14 13:36
SQL*Plusでは正常に出てきます。
OWNERとVIEW_NAMEも正常に取得できていますが、TEXTが空欄になってしまうのです。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-02-14 14:49
OracleDataReaderでの話ですが、
InitialLONGFetchSizeには値が何に設定されてますか?
#TEXTはLONG型なので、このプロパティが関係ある?と思ってみました。
#デフォルトでは0らしいです。


っとごめんなさい。
勘違いですね、OracleDataReaderではなくOracleDataAdapterでも試してみたと
書いてありましたね。
失礼しました。

#また追加
いや、OracleDataReaderも試されて・・・いる?
すみません、混乱してきました・・・。
整理して出直します。
[ メッセージ編集済み 編集者: 夏椰|。σ)o 編集日時 2006-02-14 14:51 ]

[ メッセージ編集済み 編集者: 夏椰|。σ)o 編集日時 2006-02-14 14:57 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-02-14 17:55
DESC DBA_VIEWS
してみると TEXT は LONG(0) で定義されてますね...


何時間も送れてダブって投稿してしまった・・・
http://otndnld.oracle.co.jp/document/products/oracle10g/101/doc_v6/win.101/B15519-01/featData.htm#i1007197

[ メッセージ編集済み 編集者: かるあ 編集日時 2006-02-14 18:20 ]
tomi
会議室デビュー日: 2006/02/08
投稿数: 11
投稿日時: 2006-02-14 19:33
ありがとうございます。解決しました。

Dim DBred As OracleDataReader
DBcmd.CommandText = "SELECT MAX(TEXT_LENGTH) AS MAXLEN FROM DBA_VIEWS"
DBred = DBcmd.ExecuteReader
DBred.Read()

を追加し、
OracleDataAdapterに以下を追加することでTEXTが取得できました。
OraDA.SelectCommand.InitialLONGFetchSize = DBred("MAXLEN")
1

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