|
Программирование >> Руководство по созданию web приложений
Запуск хранимых процедур хранимых упростить с базами данных за счет отделения Как уже говорилось . разработку и грамм от данных. Практически при создании приложений для Интернета или Вам вызвать хранимые процедуры из серверных сценариев JScript или Script, встроенных в ASP, либо из расширений сервера таких, как программы CGI или 1SAPI. В последнем случае мы дуем обращаться к бале данных Microsoft SQL Seryer с i интерфейса ODBC, а не ADO или OLE DB. Именно поэтому, рассказывая о работе с методами доступа ADO и OLE DB в приложениях, написанных на С++, мы опустили материал о хранимых процедур как второстепенный. же необходимо к нему вернуться, так как уже в следующей главе мы займемся созданием расширений сервера Web, обращающихся к базам данных через ODBC. Привязка параметров Запуск процедур выполняется примерно таким же образом, что и команд при помощи функции SQLExecDirect Вы должны сформировать команду в виде шаблона хранимой процедуры и затем запустить ее. Однако чем рассказать о шаблонах хранимых процедур, мы займем- ся привязкой входных и выходных impirnvfiHiH. передаваемых процедуре при запуске. В ходе этой параметры процедуры привязываются к локаль- ным переменным, в программе. Для : параметров ; процедур Вы использовать SQLBindParameter, которой приведен ; урв. SQLSMALLINT nParameterType, SQLSMALLINT SQLINTEGER SQLINTEGER* . - Через параметр liStatement программа должна передать функции SQLBindParameter созданный идентификатор команды запускапроцедуры. Параметр . з Г задает номер параметра процедуры, который будет привязан к локальной переменной. Нумерация параметров начинается с единицы. С помощью параметра nlnputOutputType функции SQLBindParameter передается одно из следующих значений, определяющих направление данных: Е0ЕРАЯйИ 1МРЦТ (входной параметр), . (выходной параметр) или SQE.P,AR*J 1MPIJT CHJTPUT (входной и выходной параметр). SQLCHAR = . . iiaterfhStit, 2, SuLPAflAR.illPUT, QLj:HAR, 50, 0, . 51, IctiAdiTdnPaas); SQLCHAR - : ]: SQLINTEGER . . . = SQL NTS; rc . . . 3, . - PilT. SQL C CHAR, 16, 0, Первый и второй параметры - входные. Они привязываются . SQLI meter с помощью . . SQL PARAM INPUT. Для третьего, выход- IIIаи параметра мы указали Константу AHAP, iHITPUT Все наши - являются текстовыми строками. Локальные перемен- ные, которые мы будем к привязывать, расположены в массивах символов типа SQLCHAR. Соответственно через четвертый и пятый i . мы передаем функции SQLBindParameter константы SQL С CHAR и [ . Обратите внимание, как мы указываем количество символов в параметре (значение (iColiimnSlze функции SQLBindParameter). Входные параметры Параметр .: . определяет идентификатор типа данных С локальной привязываемой к параметру. Здесь можно указывать такие констан-. как . - - или ,C SSHOBT. Полный список идентификаторов приве-в таблице Тип параметра хранимой процедуры указывается через параметр пРага-: функции .... г Здесь указываются такие типы данных SQL, как или о (см. 6-1). Параметр : определяет максимальное количество символов, цифр или точность иередаваемых через параметр. С ; ; параметра i программа задаст количество десятич- ных цифр маркера : . Через параметр : программа передает функции SQLBind- Paraiete г указатель на буфер локальной иеременной, которая должна быть ири-вязана к параметру хранимой процедуры. Длина этого буфера определяется параметром cbBufferSize. И наконец, через параметр pc;bPt . Вы передаете указатель на iiyuj, в которую предварительно была записана длина параметра. В следующем фрагменте кода мы выполняем привязку двух входных параметров и одного выходного параметра: SQLCHAR 1 SQLINTEGER = SQL NTS; го = - : - MterCRStnt, 1, Sol, PAR AM INPIJT SQL CHAR. 50. 0. иачеиы для передачи имени пользователя и пароля, причем соответствующие столбцы в базе данных могут содержать до 50 символов. Выходной параметр предназначен для передачи строк, размером не более 16 символов. Последние три параметра функции SOtmndParaieter описывают буферы, к соответствующим параметрам. Они имею! одинаковый размер (51 символ с учетом двоичного нуля, закрывающего строку). Запуск процедуры Как мы уже говорили, для запуска на выполнение хранимых процедур можно воспользоваться уже знакомой Вам функцией SOLExacDirecL Пиже показан фрагмент кода, в котором запускается процедура с тремя параметрами: , ..... JTS); Обратите . что через второй мы передали функции SQLExec- Direct строку щаблона хранимой процедуры, в которой параметры отмечены символом -?а Помимо параметров процедура может возвращать значение. Для такой процедуры следует подготовить щаблон следующего вида: {? = call РгоаМагвС?,?)} Папомним, что при выполнении привязки параметров хранимой процедуры фyнкцииSQLBindParameterнeoбxoдимoyк.Laaнoмepпpивязывaeмoгoпapaмeтpa Если хранимая процедура возвращает то для привязки . переменной к этому значению необходимо указать номер 1. При этом остальные параметры процедуры нумеруются, начиная со значения 2. При успещном запуске .. . процедуры :а :. * возвра- щает не только значения . nSOLJIJO ,: .: ; нои DATA. Код заверщения SQLNODATA означает, что при процедуры не был создан набор записей. В зависимости от того, какие действия выполняет хранимая процедура, данную ситуацию можно считать нормальной или ошибочной. Например, если процедура обновляет или записи в базе данных или в зависимости от тех или иных условий возвращает выходные параметры, не изменяя базу набор записей может и а а создаваться. Извлечение значений выходных параметров процедуры Перед извлечением значений выходных . : хранимой процедуры (а также значения кода возврата . необходимо выполнить обработку наборов записей, созданных при выполнении команды. Если эти результаты не нужны, их можно проигнорировать, вызвав ее в Ш!каа. функцию S break;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |