|
Программирование >> Реализация баз данных
нимой одновременно является владельцем объектов, на которые она ссылает- ся. Во избежание путаницы, при создании самих хранимых процедур и объектов, на которые они ссылаются, следует указывать dbo в качестве их Исполнение хранимой процедуры Как уже говорилось i;iyiunx занятиях, хранимую процедуру можн толнигь в Query Xnalyzer, просто набрав ее имя с необходимыми параметрами. Например, для просмотра содержимого хранимой процедуры вы набирали sp heiptext и имя нужной процедуры, которое в данном случае является параметром. Если хранимая процедура не является первым оператором пакета, то для запуска хранимой процедуры необходимо предварить ее имя ключевым словом EXECUTE (или его сокращенной версией - EXEC). Вызов хранимой процедуры Для вызова хранимой процедуры достаточно указать ее полное имя, например [имя ба- Если вы сделаете базу данных, в которой содержится хранимая процедура, текущей (USE то для вызова процедуры достаточно указать часть имени: а если имя процедуры в активной базе данных, то можно использовать просто Для ясности здесь и далее в именах объектов используются разделители Они будут применяться даже в тех случаях, когда имена объектов не нарушают определенных для идентификаторов правил. Подробнее об этом - в занятии 3 главы 2. При исполнении системных хранимых процедур с префиксом а также локальных и глобальных процедур не обязательно использовать полные имена. SQL Server будет искать в базе данных Master ую хранимую процедуру с префиксом sp , владельцем которой является dbo. Если вы все-таки решили присвоить локальной и системной процедурам одинаковые имена, обязательно укажите в первом случае имя владельца, отличное от dbo. SQL Server не выполняет поиск расширенных хранимых процедур в базе данных Master автоматически. Поэтому следует либо укаэыва гь полное имя расширенной хранимой процедуры, либо сделать активной базу данных, в которой она находится. Определение параметров и их значений Если хранимой процедуре требуются параметры, при исполнении процедуры необходимо задать их значения. Определения входных и выходных параметров начинаются со знака @, после которого следует имя параметра и описание его типа данных. При вызове функции необходимо задать значение параметра и (не обязательно) его имя. В следующих двух примерах хранимая процедура из базы данных Pubs запускается с двумя парамет- рами - ©lastname и @firstname: - Вызвать хранимую шедуру с параметрами. USE Pubs EXECUTE auinfo Green, Marjorie -- Вызвать хранимую едуру с указанием имен и значений параметров. USE Pubs EXECUTEau infо ©lastname - Green, (Sfirstname = Mariorie В первом примере задан ер-ия параметров, а их имена опущены. Если значения параметров заданы без указания имен, то их порядок должен совпадать с порядком, в котором были параметры при процедуры. Во втором примере значения заданы вместе с указанием имен параметров, в этом случае их порядок может быть любым. Если время создания для ее параметров определены значения по умолчанию, то такую процедуру можно успешно исполнить, не указывая значения параметров. Ниже приводится список некоторых вариантов синтаксиса при исполнении хранимых процедур. Хранимая процедура .нинращает значение в целочисленной переменной, определенной хранения кодов возврата. В хранимой должно присутствовать ключевое слово RETURN с целочис- ленным значением Для вызова процедуры используется ее номер в группе, указанный после точки с запятой. Если хранимые процедуры сгруппированы, можно исполнить все их, просто указав имя хранимой процедуры, или выбрать для исполнения определенную процедуру, задав ее номер. Например, есл i.iMi.i процедуры с именами dProc;I и GroLiped-Ргос;2, командой EXEC groupedproc можно запустить обе эти процедуры или командой EXE dpioc: J - только вторую процедуру. При определении параметров сгруппированных хранимых процедур каждому параметру необходимо давать уникальное в группы имя, а значения параметров сгруппированных хранимых процедур можно задавать как обычно. В хранимой определены переменные для хранения параметров. Перед командой EXECUTE определяются переменные с помошью ключевого слова DECLARE. Работе с переменными мщено упражнение 3. Подробнее о синтаксисе команды EXECUTE - в справочнике по языку Transact-SQL в SQL Server Books Online. Исполнение хранимых процедур при запуске SQL Server Используя процедуру ion, можно пометить некоторые хранимые процедуры для исполнения при запуске SQL Server. Это позволяет реализовать ряд задач для повышения производительности, администрирования системы, а также выполнять задачи в фоновом режиме. Процедура принимает три параметра: @OptionName и Вот как настроить процедуру для автоматического запуска: USE Master EXECUTE sp procoption eprocname - autostart, foptionname = startup, fopt ion value = true Автоматический запуск разрешен только для процедур, расположенных в базе данных Master, владельцем которых является dbo. Для автоматического запуска процедуры из другой базы данных можно вызвать ее из процедуры, которая расположена в базе данных Master и настроена для автоматического запуска. Процедура, вызванная из другой процедуры, называется вложенной. Модификация хранимой процедуры Оператор ALTER PROCEDURE (или его сокращенная версия ALTER PROC) позволяет модифицировать содержимое пользовательской хранимой процедуры с помощью Query Analyzer или инструмента командной строки, например Синтаксис оператора ALTER PROCEDURE почти полностью идентичен синтаксису CREATE PROCEDURE. Ценность применения оператора ALTER PROCEDURE вместо удаления и создания процедуры с нуля заключается в что ALTER сохраняет свойств процедуры (например, ее идентификатор объекта, набор прав доступа и флаги). Чтобы оставить параметр шифрования или перекомпиляции, необходимо задать соответствующие ключевые слова (WITH ENCRYPTION и/или WITH RECOMPILE) при исполнении оператора ALTER PROCEDURE. Для изменения пользовательских хранимых процедур применяют Enterprise Manager и Query Analyzer, Для этого в Enterprise Manager щелкните пользовательскую хранимую процедуру правой кнопкой, а затем щелкните Properties. В поле Text диалогового окна Stored Procedure Properties внесите необходимые изменения в операторы процедуры и щелкните ОК. Чтобы сделать то же самое средствами Query Analyzer, пользовательскую хранимую процедуру правой кнопкой, затем Edit или укажите Script Object to New Window As и щелкните Alter. После внесения необходимые ений исполните хранимую процедуру. Хранимая процедура name позволяет переименовывать пользовательские процедуры. Следующий оператор переименовывает хранимую процедуру в tvByAuihorlD: USE PUBS GO EXECUTE sp rename ©objname = byroyalty TOwname = RoyaltyByAuthorlD, eobjtype = object Кроме того, для настройки автоматического запуска используют Enterprise Manager. Для этого откройте базу данных Master и щелкните узел Procedures. Выберите хра- нимую едтэу, которую нужно запускать автоматически, и щелкните ее правой кнопкой. В диалоговом окне свойств хранимой процедуры установите флажок Execute Whenever SQL Server Starts. Чтобы определить, установлен ли автозапуск данной процедуры, с помошью функции надо проверить свойство вот как проверить, настроена ли хранимая процедура Start для автоматического запуска: USE Master -- определить овлен ли автозапуск хранимой процедуры SELECT OBJECiPROPERTY(object ici( autostart J, txeclsbLartup) Отключают автоматический запуск посредством хранимой процедуры sp conrigure. Показанный далее оператор настраивает SQL Server так, что помеченные для автоматического запуска хранимые процедуры не исполняются во время запуска SQL: EXECUTEsp.configuro Kon=ignafne - scan for startup proas, ©configvalue = 0 RECONFIGURE
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |