#sql-server #tsql #stored-procedures
#sql-сервер #tsql #хранимые процедуры
Вопрос:
create procedure sp_AD_CAREOF_COL
(
@tablename as varchar(200),
@column as varchar(200),
@column2 as varchar(200)
)
As
if col_length(@tablename, @column) is null
begin
alter table auto
add careof varchar(200)
print ('the care of column is added')
end
else if COL_LENGTH(@tablename,@column2) is null
begin
alter table auto
add ACCTG_CAREof varchar(200)
print 'the ACCTG_CAREOF column are added'
end
else
begin
print'BOTH COLUMN ARE PRESENT'
end
exec sp_AD_CAREOF_COL ('auto','careof','acctg_careof');
При использовании этого кода я получил сообщение об ошибке 102, кто-нибудь, помогите мне решить это.
Комментарии:
1. Сообщение 102 означает неправильный синтаксис. Пожалуйста, отредактируйте свой вопрос, чтобы включить полное сообщение об ошибке.
2. Пожалуйста, не используйте
sp_
префикс : «Избегайте использования префикса sp_ при именовании процедур. Этот префикс используется SQL Server для обозначения системных процедур. Использование префикса может привести к сбою кода приложения, если существует системная процедура с таким же именем.». Этот совет существует десятилетия .3. Остановитесь и подумайте о своем коде. Почему у него есть параметры, которые представляют имена таблиц и столбцов? И почему ваш код игнорирует эти параметры с помощью инструкций alter, где имена таблиц и столбцов жестко запрограммированы? «Печать» — это обычно не тот способ, которым процедура должна взаимодействовать с приложением. Начните сначала.
Ответ №1:
Ваша EXEC
команда неверна, вместо этого используйте следующее (удалите (
и )
):
EXEC sp_AD_CAREOF_COL 'auto', 'careof', 'acctg_careof';
Вы также можете использовать следующее:
EXEC sp_AD_CAREOF_COL @tablename = 'auto', @column = 'careof', @column2 = 'acctg_careof'