Создание, изменение и удаление хранимых процедур
В управляющих объектах SQL Server SMO хранимые процедуры представлены объектом StoredProcedure.
Создание объекта StoredProcedure в SMO требует, чтобы свойство TextBody указывало сценарий Transact-SQL, определяющий хранимую процедуру. Параметры требуют префикс «@» и должны создаваться отдельно путем использования объектов StoredProcedureParameter и добавления в коллекцию StoredProcedureParameter объекта StoredProcedure.
Пример
Чтобы использовать предоставленный пример кода при создании собственного приложения, необходимо выбрать среду разработки, шаблон и язык программирования. Дополнительные сведения см. в разделе Как создать проект SMO на языке Visual Basic в среде Visual Studio .NET или Как создать проект SMO на языке Visual C# в среде Visual Studio .NET.
Создание, изменение и удаление хранимой процедуры на языке Visual Basic .NET
Данный пример кода показывает, как создавать хранимую процедуру для базы данных AdventureWorks. По идентификатору сотрудника пример возвращает фамилию этого сотрудника. Хранимая процедура требует один входной параметр для указания идентификатора сотрудника и один выходной параметр для возвращения последнего имени сотрудника.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Define a StoredProcedure object variable by supplying the parent database and name arguments in the constructor.
Dim sp As StoredProcedure
sp = New StoredProcedure(db, "GetLastNameByEmployeeID")
'Set the TextMode property to false and then set the other object properties.
sp.TextMode = False
sp.AnsiNullsStatus = False
sp.QuotedIdentifierStatus = False
'Add two parameters.
Dim param As StoredProcedureParameter
param = New StoredProcedureParameter(sp, "@empval", DataType.Int)
sp.Parameters.Add(param)
Dim param2 As StoredProcedureParameter
param2 = New StoredProcedureParameter(sp, "@retval", DataType.NVarChar(50))
param2.IsOutputParameter = True
sp.Parameters.Add(param2)
'Set the TextBody property to define the stored procedure.
Dim stmt As String
stmt = " SELECT @retval = (SELECT LastName FROM Person.Contact,HumanResources.Employee WHERE Person.Contact.ContactID = HumanResources.Employee.ContactID AND HumanResources.Employee.EmployeeID = @empval )"
sp.TextBody = stmt
'Create the stored procedure on the instance of SQL Server.
sp.Create()
'Modify a property and run the Alter method to make the change on the instance of SQL Server.
sp.QuotedIdentifierStatus = True
sp.Alter()
'Remove the stored procedure.
sp.Drop()