如何从aspx页面后面的代码调用CLR存储过程?

时间:2009-10-30 06:42:16

标签: sql-server-2005 stored-procedures clr asp.net-2.0

如何从aspx页面的代码隐藏调用CLR存储过程?

我使用带有commandtext的SqlCommand作为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]'不存在。”。

请帮忙。

1 个答案:

答案 0 :(得分: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;
}

当你有一个参数做类似的事情时:

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