Creating a User-Defined Function

  • how-to

    How to create a user-defined function to call your JavaScript function.
    This guide is for Couchbase Server.

    Creating the SQL++ User-Defined Function

    Before you can run the JavaScript function you have created (see Creating a JavaScript Library), you will need to create a SQL++ User-Defined Function to reference it. You can create a SQL++ User-Defined Function by using:

    For more information on SQL++ User Defined Functions in general, read User-Defined Functions.

    • Query Workbench

    • REST API

    • SQL++

    1. Access the UDF screen from the administration console.

      navigate to udf query
    2. Click on the + add function link from the UDFs screen.

      library list

      which will display the Add Function screen.

      add function dialog
    3. Use the Namespace drop-down lists to select the bucket and scope where your Javascript function resides.

    4. Fill in the Function Name of your SQL++ User-Defined Function.

    5. Leave the Parameters as they are.

      The …​ in the parameters box denotes a variable length list of parameters. This is why you don’t have to fill in this field.
    6. Select Javascript for the function type. A field will appear in the dialog with a list of available libraries in the namespace you selected.

      add function dialog switch to javascript

      From this list select the library containing your function.

    7. Enter the name of the JavaScript function in the Library Function Name field.

    Run a curl command from the shell to add a SQL++ User-Defined Function that calls your Javascript function.

    curl -v http://localhost:8093/query/service \
      -u Administrator:password \
      -d 'statement=CREATE FUNCTION default:`travel-sample`.inventory.GetBusinessDays(...)
      LANGUAGE JAVASCRIPT as "getBusinessDays" AT "travel-sample/inventory/my-library"'

    Execute the CREATE FUNCTION in the CBQ Shell to create the SQL++ User-Defined Function:

    CREATE FUNCTION default:`travel-sample`.`inventory`.GetBusinessDays(...) LANGUAGE JAVASCRIPT as "getBusinessDays" AT "travel-sample/inventory/my-library";
    The SQL++ User-Defined Function will take the same scope as the JavaScript UDF it is referencing.

    Having created your SQL++ User-Defined Function, the next step is to use a SQL++ statement to call the function.