2011-03-17 54 views
0

SQL變量可以包含比SQL語句更多...我收到錯誤(無效字符)在執行命令cmd.ExecuteReader()....抓取使用Oracledatareader多個記錄 - C#

的僞:

.... 
string sql = @"SELECT * FROM table1 WHERE col1=:p1;" + 
"SELECT MAX (col3) FROM table2 WHERE col2 = :p2 " 
cmd = DBConnection.GetCommand(); // Get the connection 
cmd.CommandText = sql; 
cmd.Parameters.Clear(); 
cmd.Parameters.Add(":p1", "Somevalue1"); 
cmd.Parameters.Add(":p2", "somevalue2"); 
OracleDataReader reader = cmd.ExecuteReader(); //Error: Invalid Character 

if (reader.HasRows) 
{ 
reader.Read(); 
........ 
} 

reader.NextResult(); 

..... 
+4

有問題嗎? – chris 2011-03-17 18:01:33

+0

非常非常好的代碼,並且充滿語法錯誤('........')。但我必須關閉它。 – 2011-03-17 18:07:54

+0

是的,我同意Radek,這不會編譯。 – Cyberdrew 2011-03-17 18:10:15

回答

2

AFAIK Oracle不允許以這種方式執行多個SQL語句。有時您可以通過將SQL語句包裝在PL/SQL匿名塊中來繞過它,例如「BEGIN SELECT ...; SELECT ...; END;」,但是你需要在綁定變量的SELECTs上使用INTO子句作爲目標,以便訪問調用代碼中的查詢結果。