Oracle で次の SQL を実行すると、列のデフォルト値が正しく報告されます ('Test')。.NET で同じ SQL を実行すると、レポートされる既定値は NULL です。
SELECT column_name, data_default FROM user_tab_columns WHERE table_name='MYTABLENAME'
問題の列は Varchar2 です。数値列もテストしました-同じ問題。
データベースのバージョンは、Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production です。
.NETコネクタはODP.NETです
オペレーティングシステムはWindows 7 / 64です
all_tab_columns から同じ結果 (NULL) が得られます
.NET コード:
Dim provider As DbProviderFactory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client")
Using connection As DbConnection = provider.CreateConnection
connection.ConnectionString = "Data Source=localhost; User Id=userid; Password=password"
connection.Open
Using dt As New DataTable
Using command As DbCommand = provider.CreateCommand
command.CommandText = "SELECT column_name, data_default FROM user_tab_columns WHERE table_name='MYTABLENAME'"
command.Connection = connection
Using da As DbDataAdapter = provider.CreateDataAdapter
da.SelectCommand = command
da.Fill(dt)
End Using
End Using
For Each row As DataRow in dt.Rows
Response.Write(row("COLUMN_NAME") & " " & row("DATA_DEFAULT") & "<br>")
Next
End Using
End Using