Руководство по языку sql


Download 1.22 Mb.
Pdf ko'rish
bet30/62
Sana23.04.2023
Hajmi1.22 Mb.
#1393455
1   ...   26   27   28   29   30   31   32   33   ...   62
Bog'liq
Firebird3 SQL features

CREATE FUNCTION FN_T 
RETURNS DOUBLE PRECISION DETERMINISTIC 
AS 
begin 
return rand(); 
end 
-- функция будет вычислена дважды и вернѐт 2 разных значения 
select fn_t() from rdb$database 
union all 
select fn_t() from rdb$database 
-- функция будет вычислена единожды и вернѐт 2 одинаковых 
значения 
with t(n) as ( 
select 1 from rdb$database 
union all 
select 2 from rdb$database 

select n, fn_t() from t 


Новые возможности языка SQL Firebird 3.0 
41 
См. 
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1081535&msg=15694955
  
В необязательной секции declarations описаны локальные переменные, 
именованные курсоры и подпрограммы. 
После секции объявления в теле хранимой функции, следует блок PSQL 
операторов, заключѐнных в операторные скобки BEGIN и END.
Хранимая функция может быть расположена во внешнем модуле. В этом 
случае вместо тела функции указывается место расположения функции во 
внешнем модуле с помощью предложения EXTERNAL NAME. Аргументом этого 
предложения является строка, в которой через разделитель указано имя 
внешнего модуля, имя функции внутри модуля и определѐнная пользователем 
информация. В предложении ENGINE указывается имя движка для обработки 
подключения внешних модулей. В Firebird для работы с внешними модулями 
используется движок UDR.
Предупреждение: 
Не следует путать внешние функции, объявленные как DECLARE EXTERNAL 
FUNCTION
, так же известные как UDF, с функциями расположенными во внешних 
модулях объявленных как CREATE FUNCTION … EXTERNAL NAME, называемых 
UDR (User Defined Routine
). Первые являются унаследованными (Legacy) из 
предыдущих 
версий 
Firebird

Их 
возможности 
существенно 
уступают 
возможностям нового типа внешних функций. 
Создать новую хранимую функцию может: 

SYSDBA; 

Владелец базы данных; 

Любой пользователь, которому выдана привилегия на создание функций 
(GRANT CREATE FUNCTION TO [USER | ROLE] ); 

Любой пользователь, вошедший с ролью RDB$ADMIN; 

Пользователь root операционной системы Linux; 

администраторы Windows, если используется доверительная авторизация 
(trusted authentication) 
и включено автоматическое предоставление роли 
RDB$ADMIN 
администраторам Windows. 
Пользователь, создавший хранимую процедуру, становится еѐ владельцем. 
Примеры
1. 
Функция сложения двух целочисленных значений. Второй параметр 
объявлен необязательным и имеет значение по умолчанию равное нулю. 

Download 1.22 Mb.

Do'stlaringiz bilan baham:
1   ...   26   27   28   29   30   31   32   33   ...   62




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling