-3
Когда я пытаюсь создать следующую хранимую процедуру, я получаю это сообщение об ошибке: что я делаю неправильно?Помогите мне исправить эту хранимая процедуру
Create Procedure uspUpdateWithNewSSN
(
@OldSSN VARCHAR(9)
,@NewSSN VARCHAR(9)
)
AS
SET NOCOUNT ON
BEGIN
If OBJECT_ID(N'NewSSNEXIST') IS NULL
Begin
Create Table NewSSNEXIST
(
NewSSN nvarchar(9)NOT NULL
)
End
Begin
Insert into NewSSNEXIST
Exec uspCheckNewSSN @NewSSN
GO
End
If (select count(*) from NewSSNEXIST)>0
Begin
print 'social security number already used'
Truncate Table NewSSNEXIST;
Return
End
Else
--Begin update ssn
Begin
--Declare @OldSSN VARCHAR(9)
--Declare @NewSSN VARCHAR(9)
Declare @cmd VARCHAR(MAX)
--Set @OldSSN='222334444'
--Set @NewSSN='222334644'
Select @cmd = COALESCE(@cmd,'') +
'
UPDATE [' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] SET [' + Column_Name + '] = ' + @NewSSN + '
WHERE [' + Column_Name + '] = ' + @OldSSN + '
'
From INFORMATION_SCHEMA.COLUMNS
Where Column_Name like 'SSN%'
OR Column_Name LIKE 'ssn%'
OR Column_Name LIKE 'ssn%'
OR Column_Name LIKE '%_ssn%'
OR Column_Name LIKE '_ocsecno'
OR Column_Name LIKE 'Ssn%';
--Select @cmd
EXEC(@cmd)
End
END
GO
Вы не можете использовать 'GO' в хранимой процедуре: [HTTP: //stackoverflow.com/a/2310488/1115360](http://stackoverflow.com/a/2310488/1115360). –
у вас есть пакетный разделитель 'GO' в вашем коде –
Просим вас и вашей компании одобрить и« исправить »эту процедуру, переработав, как вы храните эту информацию. SSN никогда не должен храниться как обычный текст. Не шифрование этих данных небрежно. –