Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Visualização Pública.
Aplica-se a:
Databricks SQL Databricks Runtime 17.0 e superior
apenas para Unity Catalog
Cria um procedimento no Catálogo do Unity que usa ou modifica argumentos, executa um conjunto de instruções SQL e, opcionalmente, retorna um conjunto de resultados.
Além da invocação de parâmetro posicional, você também pode invocar procedimentos usando invocação de parâmetro nomeado.
Observação
Os procedimentos não podem ser chamados do ODBC.
Sintaxe
CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
procedure_name ( [ procedure_parameter [, ...] ] )
[ characteristic [...] ]
AS compound_statement
procedure_parameter
[ IN | OUT | INOUT ] parameter_name data_type
[ DEFAULT default_expression ] [ COMMENT parameter_comment ]
characteristic
{ LANGUAGE SQL |
SQL SECURITY INVOKER |
NOT DETERMINISTIC |
COMMENT procedure_comment |
DEFAULT COLLATION UTF8_BINARY |
MODIFIES SQL DATA }
Parâmetros
OU SUBSTITUIR
Se especificado, um procedimento com o mesmo nome será substituído. Você não pode substituir uma função existente por um procedimento. Não é possível especificar esse parâmetro com
IF NOT EXISTS.SE NÃO EXISTIR
Se especificado, cria o procedimento somente quando um procedimento com essa anotação ainda não existe. Se existir um procedimento com o mesmo nome, a instrução será ignorada. Não é possível especificar esse parâmetro com
OR REPLACE.-
Um nome para o procedimento. Opcionalmente, você pode qualificar o nome do procedimento com um nome de esquema. Se o nome não for qualificado, o procedimento permanente será criado no esquema atual.
O nome do procedimento deve ser exclusivo para todas as rotinas (procedimentos e funções) no esquema.
procedure_parameter
Especifica um parâmetro do procedimento.
-
O nome do parâmetro deve ser exclusivo dentro do procedimento.
IN, INOUT ou OUT
Opcionalmente, descreve o modo do parâmetro.
IN
Define um parâmetro somente de entrada. Esse é o padrão.
INOUT
Define um parâmetro que aceita um argumento de entrada-saída. Se o procedimento for concluído sem um erro não tratado, ele retornará o valor final do parâmetro como saída.
OUT
Define um parâmetro de saída. O parâmetro é inicializado
NULLe, se o procedimento for concluído sem um erro não tratado, retornará o valor final do parâmetro como saída.
-
Qualquer tipo de dados com suporte.
PADRÃO default_expression
Um padrão opcional a ser usado quando uma invocação de função não atribui um argumento ao parâmetro.
default_expressiondeve ser conversível emdata_type. A expressão não deve fazer referência a outro parâmetro nem conter uma subconsulta.Quando você especifica um padrão para um parâmetro, todos os parâmetros seguintes também devem ter um padrão.
DEFAULTnão há suporte paraOUTparâmetros.Comentário COMMENT
Uma descrição opcional do parâmetro.
commentdeve ser uma literal deSTRING.
-
-
Uma instrução composta SQL (
BEGIN ... END) com a definição do Procedimento SQL.Quando o procedimento é criado, a correção sintactica é validada. O corpo do procedimento não é validado para correção semântica até que o procedimento seja invocado.
característica
A característica
SQL SECURITY INVOKEReLANGUAGE SQLsão necessárias. Todos os outros são opcionais. Você pode especificar qualquer número de características em qualquer ordem, mas pode especificar cada cláusula apenas uma vez.Linguagem SQL
A linguagem da implementação da função.
INVOCADOR DE SEGURANÇA DO SQL
Especifica que quaisquer instruções SQL no corpo do procedimento serão executadas sob a autoridade do usuário invocando o procedimento.
Ao resolver relações e rotinas dentro do corpo do procedimento, o Azure Databricks usa o catálogo atual e o esquema atual no momento da invocação.
NÃO DETERMINÍSTICO
Um procedimento é considerado não determinístico, o que significa que ele pode retornar resultados diferentes em cada invocação, mesmo quando é chamado com os mesmos argumentos.
COMENTÁRIO procedure_comment
Um comentário para o procedimento.
procedure_commentdeve serSTRINGliteral. O padrão éNULL.COLAÇÃO PADRÃO UTF8_BINARY
Aplica-se a:
Databricks SQL
Databricks Runtime 17.1 and aboveForça a ordenação padrão do procedimento para
UTF8_BINARY. Essa cláusula será obrigatória se o esquema no qual o procedimento for criado tiver uma ordenação padrão diferente deUTF8_BINARY. A ordenação padrão do procedimento é usada como ordenação padrão para parâmetros de procedimento e a ordenação padrão padrão para todos os literais de cadeia de caracteres e variáveis locais no corpo do procedimento.MODIFICA DADOS SQL
Supõe-se que um procedimento modifique os dados SQL.
Exemplos
-- Demonstrate INOUT and OUT parameter usage.
> CREATE OR REPLACE PROCEDURE add(x INT, y INT, OUT sum INT, INOUT total INT)
LANGUAGE SQL
SQL SECURITY INVOKER
COMMENT 'Add two numbers'
AS BEGIN
SET sum = x + y;
SET total = total + sum;
END;
> DECLARE sum INT;
> DECLARE total INT DEFAULT 0;
> CALL add(1, 2, sum, total);
> SELECT sum, total;
3 3
> CALL add(3, 4, sum, total);
7 10
-- The last executed query is the result set of a procedure
> CREATE PROCEDURE greeting(IN mode STRING COMMENT 'informal or formal')
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SELECT 'Hello!';
CASE mode WHEN 'informal' THEN SELECT 'Hi!';
WHEN 'formal' THEN SELECT 'Pleased to meet you.';
END CASE;
END;
> CALL greeting('informal');
Hi!
> CALL greeting('formal');
Pleased to meet you.
> CALL greeting('casual');
Hello!