【发布时间】:2013-03-05 08:37:19
【问题描述】:
我正在尝试在 C# 中以编程方式更改存储过程中的参数。我遇到了 SMO 并一直在尝试使用它,但更改一直失败。这是我的代码:
//alter parameter data type in stored procedure if parameter is not varchar
public static void AlterSPParamInfo (string SPName,string parameterName,string connectionStringName)
{
SqlConnection vSqlConnection = CreateSqlConnectionStr(connectionStringName);
using(vSqlConnection)
{
ServerConnection vConnection = new ServerConnection(vSqlConnection);
Server vServer = new Server(vConnection);
Database vDatabase = vServer.Databases["HrSys"];
var vTables = vDatabase.Tables;
StoredProcedure sp = vDatabase.StoredProcedures[SPName];
if(sp != null)
{
StoredProcedureParameter spParameter = sp.Parameters[parameterName];
if(spParameter!=null)
{
if(!spParameter.DataType.Equals(DataType.VarChar(50)))
{
spParameter.DataType = DataType.VarChar(50);
sp.QuotedIdentifierStatus = true;
try
{
sp.Refresh();
sp.Alter( );
}
catch(SqlServerManagementException ex)
{
//other code
}
}
}
}
我在这里缺少什么?还是我不能以这种方式更改存储过程的参数?我尝试在 google 或 MSDN 上查找更多信息,但找不到任何解决方案...
【问题讨论】:
-
会发生什么?你有错误吗?如果是这样:请让我们知道究竟该错误是什么!我们既无法读取您的屏幕,也无法读取您的思想......
-
是的,我遇到了一个错误,就像我提到的那样。改变失败。参数的数据类型不会改变。
-
您能否请给我们准确和完整的错误信息?
-
@marc_s 说没有错误消息。我所说的“错误”是数据类型没有成功改变。代码没有抛出任何异常。这就是为什么我没有给出准确完整的错误信息,没有。它让我疯了!跨度>
-
@marc_s 感谢您的评论顺便说一句。抱歉无法提供详细的错误信息。
标签: c# sql sql-server stored-procedures smo