> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> توثيق FUNCTION

# CREATE FUNCTION -دالة معرّفة من قبل المستخدم (دالة معرّفة من قبل المستخدم)

ينشئ دالة معرّفة من قبل المستخدم (دالة معرّفة من قبل المستخدم) من تعبير لامبدا. ويجب أن يتألف هذا التعبير من معاملات الدالة أو الثوابت أو المعاملات أو استدعاءات دوال أخرى.

**الصياغة**

```sql theme={null}
CREATE [OR REPLACE] FUNCTION name [ON CLUSTER cluster] AS (parameter0, ...) -> expression
```

يمكن أن تحتوي الدالة على أي عدد من المعاملات.

توجد بعض القيود:

* يجب أن يكون اسم الدالة فريدًا بين الدوال المعرّفة من قبل المستخدم ودوال النظام.
* الدوال العودية غير مسموح بها.
* يجب تحديد جميع المتغيرات التي تستخدمها الدالة ضمن قائمة معاملاتها.

إذا تم انتهاك أي قيد، فسيتم رفع استثناء.

**مثال**

```sql title="Query" theme={null}
CREATE FUNCTION linear_equation AS (x, k, b) -> k*x + b;
SELECT number, linear_equation(number, 2, 1) FROM numbers(3);
```

```text title="Response" theme={null}
┌─number─┬─plus(multiply(2, number), 1)─┐
│      0 │                            1 │
│      1 │                            3 │
│      2 │                            5 │
└────────┴──────────────────────────────┘
```

تُستدعى [دالة شرطية](/ar/reference/functions/regular-functions/conditional-functions) ضمن دالة معرّفة من قبل المستخدم في الاستعلام التالي:

```sql title="Query" theme={null}
CREATE FUNCTION parity_str AS (n) -> if(n % 2, 'odd', 'even');
SELECT number, parity_str(number) FROM numbers(3);
```

```text title="Response" theme={null}
┌─number─┬─if(modulo(number, 2), 'odd', 'even')─┐
│      0 │ even                                 │
│      1 │ odd                                  │
│      2 │ even                                 │
└────────┴──────────────────────────────────────┘
```

استبدِل دالة معرّفة من قبل المستخدم موجودة:

```sql title="Query" theme={null}
CREATE FUNCTION exampleReplaceFunction AS frame -> frame;
SELECT create_query FROM system.functions WHERE name = 'exampleReplaceFunction';
CREATE OR REPLACE FUNCTION exampleReplaceFunction AS frame -> frame + 1;
SELECT create_query FROM system.functions WHERE name = 'exampleReplaceFunction';
```

```text title="Response" theme={null}
┌─create_query─────────────────────────────────────────────┐
│ CREATE FUNCTION exampleReplaceFunction AS frame -> frame │
└──────────────────────────────────────────────────────────┘

┌─create_query───────────────────────────────────────────────────┐
│ CREATE FUNCTION exampleReplaceFunction AS frame -> (frame + 1) │
└────────────────────────────────────────────────────────────────┘
```

<div id="related-content">
  ## محتوى ذو صلة
</div>

<div id="executable-udfs">
  ### [دوال معرّفة من قبل المستخدم القابلة للتنفيذ](/ar/reference/functions/regular-functions/udf).
</div>

<div id="user-defined-functions-in-clickhouse-cloud">
  ### [الدوال المعرّفة من قبل المستخدم في ClickHouse Cloud](https://clickhouse.com/blog/user-defined-functions-clickhouse-udfs)
</div>
