CREATE PROCEDURE (external)
Enterprise Mode only
Adds an external procedure to Vertica. See External procedures for more information.
Syntax
CREATE PROCEDURE [ IF NOT EXISTS ]
    [[database.]schema.]procedure( [ argument-list ] )
    AS executable
    LANGUAGE 'EXTERNAL'
    USER OS-user
Parameters
- IF NOT EXISTS
- If an object with the same name exists, return without creating the object. If you do not use this directive and the object already exists, Vertica returns with an error message. - The - IF NOT EXISTSclause is useful for SQL scripts where you might not know if the object already exists. The ON ERROR STOP directive can be helpful in scripts.- This option cannot be used with - OR REPLACE.
- [- database- .]- schema
- Database and schema. The default schema is - public. If you specify a database, it must be the current database.
- procedure
- Specifies a name for the external procedure, where procedure-nameconforms to conventions described in Identifiers.
- argument-list
- A comma-delimited list of procedure arguments, where each argument is specified as follows:
[ argname ] argtype- 
argnameoptionally provides a descriptive name for this argument.
- 
argtypemust be one of the following data types supported by Vertica:- 
BIGINT 
- 
BOOLEAN 
- 
DECIMAL 
- 
DOUBLE PRECISION 
- 
FLOAT 
- 
FLOAT8 
- 
INT 
- 
INT8 
- 
INTEGER 
- 
MONEY 
- 
NUMBER 
- 
NUMERIC 
- 
REAL 
- 
SMALLINT 
- 
TINYINT 
- 
VARCHAR 
 
- 
 
- 
- executable
- The name of the executable program in the procedures directory, a string.
- OS-user
- The owner of the file, a string. The owner:
- 
Cannot be root 
- 
Must have execute privileges on executable
 
- 
Privileges
Superuser
System security
- 
The procedure file must be owned by the database administrator (OS account) or by a user in the same group as the administrator. The procedure file must also have the set UID attribute enabled, and allow read and execute permission for the group. 
- 
External procedures that you create with CREATE PROCEDURE (external) are always run with Linux dbadmin privileges. If a dbadmin or pseudosuperuser grants a non-dbadmin permission to run a procedure using GRANT (procedure), be aware that the non-dbadmin user runs the procedure with full Linux dbadmin privileges. 
Examples
The following example shows how to create a procedure named helloplanet for the procedure file helloplanet.sh. This file accepts one VARCHAR argument.
Create the file:
#!/bin/bash
echo "hello planet argument: $1" >> /tmp/myprocedure.log
Create the procedure with the following SQL:
=> CREATE PROCEDURE helloplanet(arg1 varchar) AS 'helloplanet.sh' LANGUAGE 'external' USER 'dbadmin';