# DROP FUNCTION UDF

## Syntax

```sql
DROP FUNCTION [IF EXISTS] function_name
```

## Description

This statement drops the [user-defined function](https://mariadb.com/docs/server/server-usage/user-defined-functions) (UDF) named `function_name`.

To drop a function, you must have the [DELETE privilege](https://mariadb.com/docs/server/reference/sql-statements/account-management-sql-statements/grant) for the mysql database. This is because `DROP FUNCTION` removes the row from the [mysql.func](https://mariadb.com/docs/server/reference/system-tables/the-mysql-database-tables/mysql-func-table) system table that records the function's name, type and shared library name.

For dropping a stored function, see [DROP FUNCTION](https://mariadb.com/docs/server/server-usage/stored-routines/stored-functions/drop-function).

### Upgrading a UDF

To upgrade the UDF's shared library, first run a [DROP FUNCTION](https://mariadb.com/docs/server/server-usage/stored-routines/stored-functions/drop-function) statement, then upgrade the shared library and finally run the CREATE FUNCTION statement. If you upgrade without following this process, you may crash the server.

## Examples

```sql
DROP FUNCTION jsoncontains_path;
```

IF EXISTS:

```sql
DROP FUNCTION jsoncontains_path;
ERROR 1305 (42000): FUNCTION test.jsoncontains_path does not exist

DROP FUNCTION IF EXISTS jsoncontains_path;
Query OK, 0 rows affected, 1 warning (0.00 sec)

SHOW WARNINGS;
+-------+------+------------------------------------------------+
| Level | Code | Message                                        |
+-------+------+------------------------------------------------+
| Note  | 1305 | FUNCTION test.jsoncontains_path does not exist |
+-------+------+------------------------------------------------+
```

<sub>*This page is licensed: GPLv2, originally from*</sub> [<sub>*fill\_help\_tables.sql*</sub>](https://github.com/MariaDB/server/blob/main/scripts/fill_help_tables.sql)

{% @marketo/form formId="4316" %}
