Либо параметр @objname неоднозначен, либо заявленный @objtype (столбец) неверен.
у меня есть следующая хранимая процедура, которая делает много задач в соответствии с моей ситуацией
моя проблема не в хранимой процедуре, потому что она отлично работает в sql и делает то, что я хочу
но моя проблема заключается в вызове этой хранимой процедуры в C#.net (Ado.net техника)
потому что когда я вызываю процедуру, я получаю следующее исключение
Либо параметр @objname неоднозначен, либо заявленный @objtype (столбец) неверен.
вызов кода хранимой процедуры
public void CreatePrimaryKeyOnly(string PT,string PK) { using (SqlConnection connection = new SqlConnection(connection_string)) { connection.Open(); SqlCommand command = new SqlCommand("CreatePrimaryKeyOnly", connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@TableName", SqlDbType.VarChar).Value = PT; command.Parameters.Add("@ColumnName", SqlDbType.VarChar).Value = PK; command.ExecuteNonQuery(); connection.Close(); } }
а хранимая процедура такова
ALTER Procedure [dbo].[CreatePrimaryKeyOnly] @TableName nvarchar(255), @ColumnName nvarchar(255) as --Alter Table Sys_Tables Add TableID_Spare uniqueidentifier Not null Default(newid()) Declare @AddColumn nvarchar(2000) Set @AddColumn='Alter Table [' + @TableName + '] Add ' + @ColumnName + '_Spare uniqueidentifier Not null Default(newid()) ' Exec(@Addcolumn) --delete Basic primary key Declare @GetPrimayKeyName nvarchar(2000) SELECT @GetPrimayKeyName = 'ALTER TABLE [' + @TableName + '] DROP CONSTRAINT ' + name + ';' FROM sys.key_constraints WHERE [type] = 'PK' AND [parent_object_id] = OBJECT_ID(@TableName); EXEC sp_executeSQL @GetPrimayKeyName --Sp_rename '[Sys_Tables].TableID','forJoin','Column' Declare @JoinRenameStatement nvarchar(1000) Set @JoinRenameStatement='Sp_rename ''['+@TableName+'].'+@ColumnName + ''' , ForJoin,''Column''' Exec(@JoinRenameStatement ) declare @strsql varchar(2000) --Primary Key Rename --Example sp_rename '[Sys_Tables].TableID_Spare' , 'TableID', 'COLUMN' set @strsql = 'Sp_rename ''['+@TableName+'].'+@ColumnName+ +'_Spare'+ ''' , '''+@ColumnName+''',''Column''' exec (@strsql) declare @PrimaryKeyStatement varchar(2000) --Alter Table Outcomes Add Constraint OutcomesIDPK Primary Key(OutcomeID) Set @PrimaryKeyStatement= 'Alter Table ['+ @TableName + '] Add Constraint ' + @ColumnName + 'PK Primary Key(' + @ColumnName + ')' Exec(@PrimaryKeyStatement)
я попробовал это сделать, чтобы поместить параметр в вызов хранимой процедуры как SqlDbType.NVarChar, но он тоже не работает
пожалуйста, какое-нибудь решение?
Tomas Takac
Ошибка происходит от sp_rename
.
Mike Meinz
Может быть, нет имени столбца с именем @ColumnName + '_Spare'
oula alsheikh
в первом заявлении я изменяю таблицу и добавляю столбец acolumn со словом spare так что он существует