none
SQL包含巢狀查詢,使用OracleDataAdapter.FillSchema() 出現"語法錯誤: 必須提供識別項或引號識別項" RRS feed

  • 問題

  • 在.net framework2.0的環境,需要取得資料表的Schema。
    當SQL為Select * From (select * from TableA) A  時 ,
    使用System.Data.OracleClient.OracleDataAdapter.FillSchema(DataTable,SchemaType) 會出現"語法錯誤: 必須提供識別項或引號識別項"的錯誤訊息。但這句SQL使用一般的db工具執行都是沒問題的。且只要不多包一層查詢就不會有問題。
    想請問在不替換OracleClient的前提下,要處理此類SQL是否有解法方法。謝謝。

    OS:winxp SP3
    OracleClient.dll版本: 2.0.50727.3053
    Oracle版本: 10g

    StackTrack:
    [InvalidOperationException: 語法錯誤: 必須提供識別項或引號識別項。] System.Data.OracleClient.DbSqlParser.Parse2(String statementText) +168171 System.Data.OracleClient.OracleDataReader.FillSchemaTable(DataTable schemaTable) +239 System.Data.OracleClient.OracleDataReader.GetSchemaTable() +66 System.Data.ProviderBase.SchemaMapping..ctor(DataAdapter adapter, DataSet dataset, DataTable datatable, DataReaderContainer dataReader, Boolean keyInfo, SchemaType schemaType, String sourceTableName, Boolean gettingData, DataColumn parentChapterColumn, Object parentChapterValue) +4829467 System.Data.Common.DataAdapter.FillSchemaFromReader(DataSet dataset, DataTable datatable, SchemaType schemaType, String srcTable, IDataReader dataReader) +196 System.Data.Common.DataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType, IDataReader dataReader) +109 System.Data.Common.DbDataAdapter.FillSchemaInternal(DataSet dataset, DataTable datatable, SchemaType schemaType, IDbCommand command, String srcTable, CommandBehavior behavior) +143 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior) +161 System.Data.Common.DbDataAdapter.FillSchema(DataTable dataTable, SchemaType schemaType) +88 tw.com.dsc.hrm.ADMI02.Page_Load(Object sender, EventArgs e) in d:\wwwroot\DSC.NET\Disa\src\ADM\ADMI02\ADMI02.aspx.cs:81 System.EventHandler.Invoke(Object sender, EventArgs e) +0 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
    2009年9月4日 上午 01:32

解答