關於OleDbParameter的問題

【求助】關於OleDbParameter的問題
小弟做簡單測試時遇到一個很奇怪的問題。

以前一直用sqlParameter比較多,第一次用OleDbParameter.debug卻感覺沒有把值傳過去導致查不到結果。

只有一個參數,所以不存在順序的問題。

還望大神指點一二。謝謝.

.net 4.0+vs 2013+c# 

 protected void Button1_Click(object sender, EventArgs e)
        {
            string StrSQL = @"select * from acoa1002 where grno=@grno ";
            DataTable table = OracleHelper.ExecuteDataTable(StrSQL,
                new OleDbParameter("@grno", txtGR.Text.Trim().ToString())
                );
            GridView1.DataSource = table;
            GridView1.DataBind();
        }


 public static DataTable ExecuteDataTable(string sql, params OleDbParameter[] parameters)
        {
            using (OleDbConnection conn = new OleDbConnection(ConnStr))
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(sql, conn))
                {
                    cmd.CommandText = sql;
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddRange(parameters);
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    return ds.Tables[0];
                }
            }
        }


錯誤:
'/' 應用程式中發生伺服器錯誤。
處理命令時,發生一或多個錯誤。
ORA-00936: 遺漏表示式
描述:在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外狀況詳細資訊: System.Data.OleDb.OleDbException: 處理命令時,發生一或多個錯誤。
ORA-00936: 遺漏表示式

原始程式錯誤: 

 行 25:                     OleDbDataAdapter da = new OleDbDataAdapter(cmd);
行 26:                     DataSet ds = new DataSet();
行 27:                     da.Fill(ds);
行 28:                     return ds.Tables[0];
行 29:                 }

原始程式檔: d:\Dev.Source\Jeason\COAPODO\COAPODO\OracleHelper.cs    行:27      
------解决方案--------------------
OLEDB的约定就是这样的,只要有对应数据库的驱动(Provider)就可以