-1

I have to alter the table Statistic when I add a new metric in the table Metric I add a column in table Statistic.

I used a stored procedure that allows me to alter the table Statistic so the code :

CREATE PROCEDURE dbo.addnewmetricInstat
(
    @MetricName varchar(254),
    @TypeMetric varchar(254)
)
AS
  IF (@TypeMetric='int')
  Begin
      alter table Statistic
      add @MetricName int null
  end
  ELSE if (@TypeMetric='string')
  begin
     alter table Statistic
     add @MetricName varchar(254) null
  end

Then I successfully called the stored procedure but the columns is not added. The code I used in C# for calling this stored procedure is:

using (DataClassesDataContext db = new DataClassesDataContext("Data Source=EMEA-TUN-WS0367\\SQLEXPRESS;Initial Catalog=Perfgas;Integrated Security=True"))
{
    db.addnewmetricInstat(metric.MetricName, metric.Type);
    db.SubmitChanges();
}
4

1 回答 1

0

首先,您不应该尝试从您的应用程序调用 sp,直到您在 SSMS 中对其进行测试。这样你就知道问题是你的电话还是 sp。如果你这样做,它将为你节省很多调试时间。

你的过程是问题所在。为此,您将需要使用动态 SQl。现在您正在尝试添加一个名为 MetericName 的列,因为您没有使用该变量。这将工作一次,但当然第二次运行它时,您将收到一个错误,因为列已经存在。但是,您不能只将变量放入 alter table 语句中,您必须使用动态 SQL。

于 2013-04-30T14:14:54.017 回答