none
請問要如何知道某一段SQL中的TABLE是否為VIEW RRS feed

  • 問題

  •             String mySelectQuery = "select a.*,b.* from table1 as a,view1 as b where a.id=b.id";
    
                OracleConnection cn = new OracleConnection("connection  string");
    
                OracleCommand cmd = new OracleCommand(mySelectQuery, cn);
    
                cn.Open();
    
                OracleDataReader myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
    
                schemaTable = myReader.GetSchemaTable();
    
                //For each field in the table...
                foreach (DataRow myField in schemaTable.Rows)
                {
                    //For each property of the field...
                    foreach (DataColumn myProperty in schemaTable.Columns)
                    {
                        //Display the field name and value.
                        Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
                    }
                    Console.WriteLine();
    
                    //Pause.
                    Console.ReadLine();
                }
    
                //Always close the DataReader and connection.
                myReader.Close();
                cn.Close();

    請問在mProperty中有一屬性是BaseTableName,可以取得此欄位是屬於那一個TABLE,但我要如何知道,這個BaseTableName的值究竟是一個實際的TABLE還是其實是一個VIEW object?

    如果可以得知是TABLE還是VIEW 那有可能有什麼方法,可以取得這VIEW是由那幾個實際TABLE及欄位所組成的嗎?

    ps.因公司還在用Oracle 8,所以只好使用OracleConnection

    2017年6月1日 上午 07:58

所有回覆

  • Oracle 應該有提供物件的查詢,像 SQL Server 有 sys.objects 一樣。

    至於能不能看到 view 的定義,就要看你有沒有那個權限了。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2017年6月1日 上午 08:52
    版主