2009-10-30 59 views
0

如何從aspx頁面的代碼隱藏中調用CLR存儲過程?如何從aspx頁面的代碼隱藏中調用CLR存儲過程?

我正在使用SqlCommand和commandtext作爲CLR存儲過程名稱和SqlHelper.ExecuteDataSet()如下。

string connectionString = ConfigurationManager.AppSettings["ConnectDB"]; 
SqlConnection sn = new SqlConnection(connectionString); 

SqlParameter[] sqlParameters = new SqlParameter[1]; 
sqlParameters[0] = new SqlParameter("@query", SqlDbType.Int); 
sqlParameters[0].Value = "SELECT * FROM Inventory"; 
DataSet ds=new DataSet(); 
try 
{ 
ds = SqlHelper.ExecuteDataset(sn, "[dbo].[prc_clr]", sqlParameters); 
} 
catch (Exception ex) 
{ 
throw; 
} 

但我收到異常「存儲過程[dbo]。[prc_clr]'不存在。」。

請幫忙。

+0

請在SQL Server中顯示CLR SP的CREATE語句 – devio

+0

您將參數設置爲類型int,然後傳入文本。 – cjk

回答

0

它看起來像你試圖混合命令文本和存儲過程。我不相信查詢可以放入一個參數,並以這種方式使用的,所以嘗試以下任意一種方式有兩種:

string connectionString = ConfigurationManager.AppSettings["ConnectDB"]; 
SqlConnection sn = new SqlConnection(connectionString); 

DataSet ds=new DataSet(); 
try 
{ 
ds = SqlHelper.ExecuteDataset(sn, CommandType.StoredProcedure, "[dbo].[prc_clr]"); 
} 
catch (Exception ex) 
{ 
throw; 
} 

string connectionString = ConfigurationManager.AppSettings["ConnectDB"]; 
SqlConnection sn = new SqlConnection(connectionString); 

string strsql = "SELECT * FROM Inventory"; 
DataSet ds=new DataSet(); 
try 
{ 
ds = SqlHelper.ExecuteDataset(sn, CommandType.Text, strSql); 
} 
catch (Exception ex) 
{ 
throw; 
} 

而當你有一個參數(s)做類似:

ds = SqlHelper.ExecuteDataset(sn, CommandType.StoredProcedure, "[dbo].[prc_clr]", new SqlParameter("@CategoryID", 1)); 
+0

我假設他的sp只是執行傳入的查詢... – cjk

+0

我沒有想到這一點,這將是有趣的... –