CREATE PROCEDURE (External)
Enterprise Mode only
Adds an external procedure to Vertica. See Implementing External Procedures for more information on creating external procedures.
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, do not create it and proceed. If you omit this option and the object exists, Vertica generates a ROLLBACK error message. In both cases, the object is not created if it already exists. The For related information, see ON_ERROR_STOP. This option cannot be used with |
[database.]schema
|
Database and schema. The default schema is |
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
|
| executable | The name of the executable program in the procedures directory. |
| OS-user |
The owner of the file, where OS-user:
|
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 procedure helloplanet for external 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';