DB2 - Exemplos simples - VALUES INTO



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 - Exemplos simples - VALUES INTO - Db2 for z/OS Versão 12

A instrução VALUES INTO atribui um ou mais valores às variáveis.
The VALUES INTO statement assigns one or more values to variables.

Invocation - Invocação

Essa instrução só pode ser incorporada em um programa de aplicativo.
É uma instrução executável que não pode ser preparada dinamicamente.

This statement can only be embedded in an application program.
It is an executable statement that cannot be dynamically prepared.

Authorization - Autorização

Os privilégios que são detidos pelo ID de autorização da declaração devem incluir pelo menos um dos seguintes privilégios ou autoridades:
The privileges that are held by the authorization ID of the statement must include at least one of the following privileges or authorities:

  • O privilégio SELECT em cada tabela e visão identificada na instrução
    The SELECT privilege on every table and view identified in the statement

  • Propriedade de cada tabela e visualização identificada na declaração
    Ownership of every table and view identified in the statement

  • Privilégios READ e WRITE em quaisquer variáveis globais que são identificadas na instrução
    READ and WRITE privileges on any global variables that are identified in the statement

  • Propriedade de quaisquer variáveis globais que são identificadas na declaração
    Ownership of any global variables that are identified in the statement

  • Autoridade DBADM para o banco de dados (apenas tabelas)
    DBADM authority for the database (tables only)

  • Autoridade DATAACCESS
    DATAACCESS authority

  • Autoridade SYSADM
    SYSADM authority

  • Autoridade SYSCTRL (apenas tabelas de catálogo)
    SYSCTRL authority (catalog tables only)

Para uma atribuição a uma variável global ou a um elemento de uma variável global de matriz, o conjunto de privilégios deve incluir pelo menos um dos seguintes:
For an assignment to a global variable or an element of an array global variable, the privilege set must include at least one of the following:

  • O privilégio WRITE na variável
    The WRITE privilege on the variable

  • Propriedade da variável
    Ownership of the variable

  • Autoridade DATAACCESS
    DATAACCESS authority

  • Autoridade SYSADM
    SYSADM authority

Para uma atribuição a uma variável de transição, o conjunto de privilégios deve incluir pelo menos um dos seguintes:
For an assignment to a transition variable, the privilege set must include at least one of the following:

  • O privilégio UPDATE na tabela ou visão na qual o gatilho que contém a instrução de atribuição é definido
    The UPDATE privilege on the table or view on which the trigger that contains the assignment statement is defined

  • O privilégio UPDATE na coluna correspondente à variável de transição à qual será atribuído um valor
    The UPDATE privilege on the column corresponding to the transition variable to be assigned a value

  • Propriedade da tabela ou visão na qual o gatilho que contém a instrução de atribuição é definido
    Ownership of the table or view on which the trigger that contains the assignment statement is defined

  • Autoridade DBADM no banco de dados que contém a tabela na qual o gatilho que contém a instrução de atribuição é definido
    DBADM authority on the database that contains the table on which the trigger that contains the assignment statement is defined

  • Autoridade DATAACCESS
    DATAACCESS authority

  • Autoridade SYSADM
    SYSADM authority

Conjunto de privilégios: O conjunto de privilégios são os privilégios do proprietário do pacote.
A autorização é necessária para qualquer expressão usada na instrução.
Para obter mais informações, consulte Expressões.

Privilege set: The privilege set is the privileges that are held by the owner of the package.
Authorization is required for any expressions that are used in the statement.
For more information, see Expressions.

Syntax - Sintaxe

Description - Descrição

VALUES
Apresenta uma única linha que consiste em uma ou mais colunas.
Se mais de um valor for especificado, a lista de valores deve ser colocada entre parênteses.

Introduces a single row that consists of one or more columns.
If more than one value is specified, the list of values must be enclosed within parentheses.
expression
A expressão é qualquer expressão do tipo descrito em Expressões.
A expressão não deve incluir um nome de coluna.

The expression is any expression of the type described in Expressions.
The expression must not include a column name.
NULL
O valor nulo.
NULL só pode ser especificado para variáveis de host que possuem uma variável indicadora associada.

The null value.
NULL can only be specified for host variables that have an associated indicator variable.
INTO target-variable or array-variable[array-index]
Identifica um ou mais destinos para a atribuição de valores de saída.
O número de destinos na cláusula INTO deve ser igual ao número de valores que devem ser atribuídos.
O primeiro valor na linha de resultado é atribuído ao primeiro destino na lista, o segundo valor ao segundo destino e assim por diante.
Uma variável de destino não deve ser especificada mais de uma vez na cláusula INTO.
Cada atribuição a um destino é feita em sequência através da lista, de acordo com as regras descritas em Atribuição e comparação.
O valor 'W' é atribuído ao campo SQLWARN3 do SQLCA se o número de destinos for menor que o número de valores da coluna de resultado.

Se ocorrer um erro em qualquer atribuição, o valor não será atribuído ao destino e nenhum outro valor será atribuído aos destinos especificados.
Todos os valores que já foram atribuídos permanecem atribuídos.

Identifies one or more targets for the assignment of output values.
The number of targets in the INTO clause must equal the number of values that are to be assigned.
The first value in the result row is assigned to the first target in the list, the second value to the second target, and so on.
A target variable must not be specified more than once in the INTO clause.
Each assignment to a target is made in sequence through the list, according to the rules described in Assignment and comparison.
The value 'W' is assigned to the SQLWARN3 field of the SQLCA if the number of targets is less than the number of result column values.

If an error occurs on any assignment, the value is not assigned to the target, and no more values are assigned to the specified targets.
Any values that have already been assigned remain assigned.
global-variable-name
Identifica a variável global que é o destino da atribuição.
Identifies the global variable that is the assignment target.

host-variable-name
Identifica a variável do host que é o destino da atribuição.
Para valores de saída LOB, o destino pode ser uma variável de host regular (se for grande o suficiente), uma variável localizadora de LOB ou uma variável de referência de arquivo LOB.

Identifies the host variable that is the assignment target.
For LOB output values, the target can be a regular host variable (if it is large enough), a LOB locator variable, or a LOB file reference variable.

SQL-parameter-name
Identifica o parâmetro que é o destino da atribuição.
Identifies the parameter that is the assignment target.

SQL-variable-name
Identifica a variável SQL que é o destino da atribuição.
As variáveis SQL devem ser declaradas antes de serem usadas.

Identifies the SQL variable that is the assignment target.
SQL variables must be declared before they are used.

transition-variable-name
Identifica a coluna que deve ser atualizada na tabela de transição.
Um nome de variável de transição deve identificar uma coluna na tabela de assunto de um acionador, opcionalmente qualificado por um nome de correlação, que identifica o novo valor.

Identifies the column that is to be updated in the transition table.
A transition-variable-name must identify a column in the subject table of a trigger, optionally qualified by a correlation name, that identifies the new value.

array-variable [array-index]
Especifica um elemento da matriz que é o destino da atribuição.
Um elemento de matriz não deve ser especificado como o destino de uma atribuição se common-table-expression também for especificado na instrução.

Specifies an array element that is the target of the assignment.
An array element must not be specified as the target for an assignment if common-table-expression is also specified in the statement.
array-variable
Especifica uma variável de matriz.
Specifies an array variable.

[array-index]
Uma expressão que especifica qual elemento da matriz é o destino da atribuição.
Para uma matriz comum, a expressão de índice da matriz deve ser convertida em INTEGER e não deve ser o valor nulo.
Para uma matriz associativa, a expressão de índice da matriz deve ser convertida no tipo de dados de índice da matriz associativa e não deve ser o valor nulo.

índice de matriz não deve ser:
  • Uma expressão que faz referência ao registro especial CURRENT DATE, CURRENT TIME ou CURRENT TIMESTAMP
  • Uma função não determinística
  • Uma função que é definida com AÇÃO EXTERNA
  • Uma função que é definida com MODIFIES SQL DATA
  • Uma expressão de sequência
An expression that specifies which element in the array is the target of the assignment.
For an ordinary array, the array index expression must be castable to INTEGER, and must not be the null value.
The index value must be between 1 and the maximum cardinality that is defined for the array.

For an associative array, the array index expression must be castable to the index data type of the associative array, and must not be the null value.

array-index must not be:
  • An expression that references the CURRENT DATE, CURRENT TIME, or CURRENT TIMESTAMP special register
  • A nondeterministic function
  • A function that is defined with EXTERNAL ACTION
  • A function that is defined with MODIFIES SQL DATA
  • A sequence expression

Notes - Notas

Assignment to targets:
O enésimo destino identificado pela cláusula INTO corresponde à enésima coluna da tabela de resultados do cursor.
O tipo de dados do destino deve ser compatível com seu valor correspondente.
Se o valor for numérico, o destino deve ter a capacidade de representar toda a parte do valor.
Para um valor de data e hora, o destino deve ser uma variável de sequência de caracteres de comprimento mínimo, conforme definido nas representações de string de valores de data e hora.
Quando o valor a ser atribuído é nulo, uma variável indicadora deve ser especificada para a variável de destino.

As atribuições são feitas em sequência pela lista. Cada atribuição a um alvo é feita de acordo com as regras descritas em Elementos de linguagem.
Se o número de destinos for menor que o número de valores na linha, o campo SQLWARN3 do SQLCA é definido como 'W'.
Não haverá nenhum aviso se houver mais alvos do que o número de colunas de resultados.
Se um valor nulo for atribuído a uma variável de destino, uma variável indicadora deve ser fornecida.
Se ocorrer um erro de atribuição, o valor não será atribuído ao destino e nenhum outro valor será atribuído aos destinos.
Todos os valores que já foram atribuídos aos destinos permanecem atribuídos.
No entanto, se os valores LOB estiverem envolvidos, existe a possibilidade de que o destino correspondente tenha sido modificado, mas o conteúdo da variável é imprevisível.

Se mais de uma atribuição for incluída na mesma instrução de atribuição, todas as expressões serão avaliadas antes que as atribuições sejam realizadas.
Por exemplo, uma referência a uma variável em uma expressão sempre usa o valor da variável antes de qualquer atribuição na instrução de atribuição.

Normalmente, você usa localizadores LOB para atribuir e recuperar dados de colunas LOB.
No entanto, devido às regras de compatibilidade, você também pode usar localizadores LOB para atribuir dados a destinos com outros tipos de dados.
Para obter mais informações sobre o uso de localizadores, consulte Salvando armazenamento ao manipular LOBs usando localizadores de LOB.

The nth target identified by the INTO clause corresponds to the nth column of the result table of the cursor.
The data type of the target must be compatible with its corresponding value.
If the value is numeric, the target must have the capacity to represent the whole part of the value.
For a datetime value, the target must be a character string variable of a minimum length as defined in String representations of datetime values.
When the value that is to be assigned is null, an indicator variable must be specified for the target variable.

Assignments are made in sequence through the list. Each assignment to a target is made according to the rules described in Language elements.
If the number of targets is less than the number of values in the row, the SQLWARN3 field of the SQLCA is set to 'W'.
There is no warning if there are more targets than the number of result columns.
If a null value is assigned to a target variable, an indicator variable must be provided.
If an assignment error occurs, the value is not assigned to the target and no more values are assigned to targets.
Any values that have already been assigned to targets remain assigned.
However, if LOB values are involved, there is a possibility that the corresponding target was modified, but the variable's contents are unpredictable.

If more than one assignment is included in the same assignment statement, all expressions are evaluated before the assignments are performed.
For example, a reference to a variable in an expression always uses the value of the variable prior to any assignment in the assignment statement.

Normally, you use LOB locators to assign and retrieve data from LOB columns.
However, because of compatibility rules, you can also use LOB locators to assign data to targets with other data types.
For more information on using locators, see Saving storage when manipulating LOBs by using LOB locators.

Default encoding scheme:
O esquema de codificação padrão para os dados é o valor na opção de ligação ENCODING, que é a opção para codificação do aplicativo.
Se esta instrução for usada com funções como LENGTH ou SUBSTRING que estão operando em localizadores LOB e os dados LOB especificados pelo localizador estiverem em um esquema de codificação diferente da opção de ligação ENCODING, ocorrerá a materialização de LOB e a conversão de caracteres.
Para evitar a materialização de LOB e a conversão de caracteres, selecione os dados de LOB na tabela de amostra SYSIBM.SYSDUMMYA, SYSIBM.SYSDUMMYE ou SYSIBM.SYSDUMMYU.

The default encoding scheme for the data is the value in the bind option ENCODING, which is the option for application encoding.
If this statement is used with functions such as LENGTH or SUBSTRING that are operating on LOB locators, and the LOB data that is specifies by the locator is in a different encoding scheme from the ENCODING bind option, LOB materialization and character conversion occur.
To avoid LOB materialization and character conversion, select the LOB data from the SYSIBM.SYSDUMMYA, SYSIBM.SYSDUMMYE, or SYSIBM.SYSDUMMYU sample table.

Examples: - Exemplos:

Exemplo 1: Atribua o valor do registro especial CURRENT PATH à variável do host HV1.
Example 1: Assign the value of the CURRENT PATH special register to host variable HV1.

    EXEC SQL VALUES(CURRENT PATH)
             INTO :HV1;

Exemplo 2: Atribua o valor do registro especial CURRENT MEMBER à variável do host MEM.
Example 2: Assign the value of the CURRENT MEMBER special register to host variable MEM.

    EXEC SQL VALUES(CURRENT MEMBER)
             INTO :MEM;

Exemplo 3: Suponha que o localizador LOB LOB1 esteja associado a um valor CLOB.
Atribua uma parte do valor CLOB à variável de host DETAILS usando o localizador LOB.

Example 3: Assume that LOB locator LOB1 is associated with a CLOB value.
Assign a portion of the CLOB value to host variable DETAILS using the LOB locator.

    EXEC SQL VALUES (SUBSTR(:LOB1,1,35))
             INTO :DETAILS;

Se os dados de LOB especificados pelo localizador de LOB LOB1 estiverem em um esquema de codificação diferente do valor da opção de ligação ENCODING e você quiser evitar a materialização de LOB e a conversão de caracteres, use a seguinte instrução em vez da instrução VALUES INTO:

If the LOB data that is specified by the LOB locator LOB1 is in a different encoding scheme from the value of the ENCODING bind option, and you want to avoid LOB materialization and character conversion, use the following statement instead of the VALUES INTO statement:

    EXEC SQL SELECT SUBSTR(:LOB1,1,35)
               INTO :DETAILS
               FROM SYSIBM.SYSDUMMYU;

Exemplo 4: Usando uma instrução VALUES INTO, recupere o valor de INTVAR1 em um elemento na matriz MYINTARRAY1, que é indexado pelo valor da expressão
INTCOL2 + MYINTVAR + 1.
Example 4: Using a VALUES INTO statement, retrieve the value of INTVAR1 into an element in array MYINTARRAY1, which is indexed by the value of the expression
INTCOL2+MYINTVAR+1.

    VALUES INTVAR1 INTO MYINTARRAY1[INTCOL2+MYINTVAR+1];