Корпоративные базы данных - статьи




Хранимые процедуры - часть 5


Такое
возвращаемое значение ищется в файле ERROR.SQL, для того, чтобы выдать пользователю
соответствующее сообщение. Пользователь может поместить в ERROR.SQL свои собственные
коды и описания ошибок и использовать их для возвращения информации из хранимых
процедур.

Пример хранимой процедуры


Ниже приведен пример хранимой процедуры SQLBase, иллюстрирующей некоторые моменты,
описанные в данной статье. Эта процедура обновляет баланс по счету AccountNum в соответствии
с выплаченной суммой nAmount и возвращает новое значение баланса в переменной nNewBalance.
Если при этой операции происходит овердрафт, процедура устанавливает флаг bOverDrawn.

(Примечание: при написании хранимых процедур, также как и в коде на языке SQL, индентация
различных блоков кода имеет критическое значение. В программу SQLConsole входит редактор
хранимых процедур, который поддерживает нужные уровни индентации.)

Procedure Withdraw
Parameters
Number: nAccount
Number: nAmount
Receive Number: nNewBalance
Receive Boolean: nOverDrawn
Local Variables
Sql Handle: hSelect
Sql Handle: hUpdate
String: sSelect
String: sUpdate
Number: nStatus
Actions
On Procedure Startup
Set sSelect = 'Select Balance from Checking where
AccountNum=:nAccount' \
'into :nNewBalance'
Set sUpdate = 'Update Checking Set Balance = Balance -
:nAmount' \
'where AccountNum = :nAccount'
Call SqlConnect( hSelect )
Call SqlPrepare( hSelect, sSelect )
Call SqlConnect( hUpdate )
Call SqlPrepare( hUpdate, sUpdate )
On Procedure Execute
Call SqlExecute( hSelect )
Call SqlFetchNext (hSelect, nStatus )
Set nNewBalance = nNewBalance - nAmount
If ( nNewBalance < 0 )
Set bOverDrawn = TRUE
Else
Set bOverDrawn = FALSE
Call SqlExecute( hSelect )
On Procedure Close
Call SqlDisconnect( hSelect )
Call SqlDisconnect( hUpdate )



Содержание  Назад  Вперед