إنشاء دالة CREATE FUNCTION في SQL

من موسوعة حسوب
< SQL
مراجعة 14:53، 17 يناير 2018 بواسطة Nourtam (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يستخدم هذا الأمر لتعريف دالة جديدة، وله البنية العامّة الآتية:

CREATE  [ OR REPLACE ] FUNCTION name ( [[argmode] [ argname ] argtype [, ...] ] )   [RETURNS rettype]
AS 'definition'

إذ ينشئ هذا الأمر دالةً جديدةً (أو يستبدلها في حال وجود دالة سابقة) باسم name وتوضع معاملاتها ما بين القوسين وذلك بتحديد نوع المعامل argmode (كدخل IN أو خرج OUT أو دخل وخرج معًا INOUT) ومن ثم اسم المعامل argname ونوع قيمته argtype وكما يمكن تحديد نوع القيمة المُعادة rettype.

أمثلة

لإنشاء دالة باسم add لجمع عددين صحيحين وإعادة الناتج، يُستخدَم الأمر:

CREATE FUNCTION add(x INTEGER, y INTEGER) RETURNS INTEGER AS
  RETURN x + y;

لإنشاء دالة باسم hello تعيد العبارة النصية Hello مضافةً لها السلسلة s التي تدخل للدالة في لائحة المعاملات، يُستخدَم الأمر:

CREATE FUNCTION hello (s VARCHAR(20)) RETURNS VARCHAR(50) AS
  RETURN CONCAT('Hello, ',s,'!');

إذ إن الدالة CONCAT تستخدم للربط ما بين السلاسل النصية التي تدخل في معاملاتها. لإنشاء دالة باسم get_count تعيد عدد السجلات الموجودة في جدول students عبر متحول باسم num، يُستخدَم الأمر:

CREATE FUNCTION get_count (OUT num INTEGER) AS
SELECT COUNT(*) INTO num FROM students;

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم لا نعم نعم نعم

لا يدعم محرك SQLite الأمر CREATE FUNCTION ويمكن القيام بذلك اعتمادًا على لغة البرمجة C.

مصادر