WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Função CAST

CAST é uma função complexa que transforma um ou mais valores de um tipo de dados para outro.

Sintaxe

Ler diagrama de sintaxeManter visual do diagrama de sintaxe
            .-<< , <<------------.                  
            V                    |                  
>>-CAST--(----source_expression -+-- AS--DataType--------------->

>--+-------------------+--+----------------------+-------------->
   '-CCSID--expression-'  '-ENCODING--expression-'   

>--+--------------------+--+---------------------+--)----------><
   '-FORMAT--expression-'  '-DEFAULT--expression-'      

Na prática, não é possível especificar todos os parâmetros acima ao mesmo tempo. Por exemplo, os parâmetrosCCSID e ENCODING têm efeito apenas em conversões entre cadeias, enquanto FORMAT aplica-se apenas às conversões entre cadeia e numérico e entre cadeia e data/hora (em qualquer direção).

Nem todas as conversões são suportadas; consulte Coerções Suportadas para obter uma lista de conversões suportadas.

Parâmetros

Expressão de Origem

CAST retorna seu primeiro parâmetro (source_expression), que pode conter mais de um valor, como o tipo de dados especificado por seu segundo parâmetro (DataType). Em todos os casos, se a expressão de origem for NULL, o resultado será NULL. Se a expressão de origem avaliada não for compatível com o tipo de dados de destino, ou se a expressão de origem tiver o formato incorreto, será gerado um erro de tempo de execução.

CCSID

O parâmetro CCSID é utilizado somente para conversões para/de um dos tipos de dados de cadeia. Utilize o parâmetro CCSID para especificar a página de códigos da cadeia de origem ou de destino.

O parâmetro CCSID pode ser qualquer expressão que seja avaliada para um valor do tipo INT. A expressão é interpretada de acordo com a regras normais do WebSphere Message Broker para CCSIDs. Consulte Páginas de Códigos Suportadas para obter uma lista de valores válidos.

DataType

O parâmetro DataType é o tipo de dados para o qual o valor de origem será transformado. Os valores possíveis são:
  • Tipos de cadeia:
    • BIT
    • BLOB
    • CHARACTER
  • Tipos numéricos:
    • DECIMAL
    • FLOAT
    • INTEGER
  • Tipos de data/hora:
    • DATE
    • GMTTIME
    • GMTTIMESTAMP
    • INTERVAL
    • TIME
    • TIMESTAMP
  • Booleano:
    • BOOLEAN
Assegure-se de especificar um subtipo de intervalo ESQL válido após um tipo Data/Hora de INTERVAL. Para subtipos de intervalo ESQL válidos, consulte Tipo de Dados ESQL INTERVAL. Por exemplo, os comandos que mostram como especificar um subtipo de intervalo ESQL válido, consulte os exemplos 12, 13 e 14 posteriormente nesta seção.

DEFAULT

O parâmetro DEFAULT fornece um método para evitar que exceções sejam emitidas de instruções CAST, fornecendo um valor de último recurso para o retorno.

O parâmetro DEFAULT deve ser uma expressão ESQL válida que retorne o mesmo tipo de dados especificado no parâmetro DataType, caso contrário, uma exceção será lançada.

Os parâmetros CCSID, ENCODING e FORMAT não são aplicados ao resultado do parâmetro DEFAULT; portanto, a expressão deve ser do CCSID, ENCODING e FORMAT corretos.

ENCODING

Utilize o parâmetro ENCODING para especificar a codificação para determinadas conversões. O valor de ENCODING pode ser qualquer expressão que seja avaliada para um valor do tipo INT e é interpretado de acordo com as regras normais do WebSphere Message Broker para codificação. Os seguintes valores são válidos:
  • MQENC_NATIVE (0x00000222L)
  • MQENC_INTEGER_NORMAL (0x00000001L)
  • MQENC_INTEGER_REVERSED (0x00000002L)
  • MQENC_DECIMAL_NORMAL (0x00000010L)
  • MQENC_DECIMAL_REVERSED (0x00000020L)
  • MQENC_FLOAT_IEEE_NORMAL (0x00000100L)
  • MQENC_FLOAT_IEEE_REVERSED (0x00000200L)
  • MQENC_FLOAT_S390 (0x00000300L)

FORMAT

Use o parâmetro FORMAT para conversões entre tipos de dados de cadeia e tipos de dados numéricos ou de data/hora. Para conversões de tipos de cadeia, FORMAT define como a cadeia de origem deve ser analisada para preencher o tipo de dados de destino. Para conversões para tipos de cadeia, define como os dados na expressão de origem são formatados na cadeia de destino.

FORMAT utiliza tipos diferentes de expressões para conversões de data/hora e numéricas. Entretanto, a mesma expressão FORMAT pode ser utilizada independentemente se a conversão é para uma cadeia ou de uma cadeia.

É possível especificar um parâmetro FORMAT ao efetuar cast para qualquer um dos tipos de dados de sequência (BIT, BLOB ou CHARACTER), ou a partir deles, com os seguintes tipos numéricos, de data e hora:
  • DECIMAL
  • FLOAT
  • INTEGER
  • DATE
  • GMTTIMESTAMP
  • TIMESTAMP
  • GMTTIME
  • TIME
A especificação de FORMAT para uma combinação não suportada dos tipos de dados de origem e destino faz com que a mensagem de erro BIP3205 seja emitida.

Para obter informações adicionais sobre a conversão para e a partir de tipos de dados numéricos, consulte Formatando e Analisando Números como Cadeias. Para obter informações adicionais sobre a conversão para/de tipos de dados de data/hora, consulte Formatando e Analisando dateTimes como Cadeias.

O parâmetro FORMAT é equivalente àqueles usados em muitos outros produtos, como ICU e Microsoft Excel.

Exemplos

Exemplo 1. CAST Formatado de DECIMAL para CHARACTER

DECLARE source DECIMAL 31415.92653589;
DECLARE target CHARACTER;
DECLARE pattern CHARACTER '#,##0.00';
SET target = CAST(source AS CHARACTER FORMAT pattern);
-- agora o destino é '31,415.93'

Exemplo 2. CAST Formatado de DATE para CHARACTER

DECLARE now CHARACTER;
SET now = CAST(CURRENT_TIMESTAMP AS CHARACTER FORMAT 'yyyyMMdd-HHmmss');
-- agora o destino é '20041007-111656' (nesta instância, pelo menos)

Exemplo 3. CAST Formatado de CHARACTER para DATE

DECLARE source CHARACTER '01-02-03';
DECLARE target DATE;
DECLARE pattern CHARACTER 'dd-MM-yy';
SET target = CAST(source AS DATE FORMAT pattern);
-- agora o destino contém Ano=2003, Mês=02, Dia=01

Exemplo 4. CAST Formatado de CHARACTER para TIMESTAMP

DECLARE source CHARACTER '12 Jan 03, 3:45pm';
DECLARE target TIMESTAMP;
DECLARE pattern CHARACTER 'dd MMM yy, h:mma';
SET target = CAST(source AS TIMESTAMP FORMAT pattern);
-- agora o destino contém Ano=2003, Mês=01, Dia=03, Hora=15, Minuto=45,
                       Segundos=58 
-- (segundos extraídos de CURRENT_TIME porque não estão presentes na entrada)

Exemplo 5. CAST Formatado de DECIMAL para CHARACTER, com Padrão Negativo

DECLARE source DECIMAL -54231.122;
DECLARE target CHARACTER;
DECLARE pattern CHARACTER '#,##0.00;(#,##0.00)';
SET target = CAST(source AS CHARACTER FORMAT pattern);
-- agora o destino é '£(54,231.12)'

Exemplo 6. CAST Formatado de CHARACTER para TIME

DECLARE source CHARACTER '16:18:30';
DECLARE target TIME;
DECLARE pattern CHARACTER 'hh:mm:ss';
SET target = CAST(source AS TIME FORMAT pattern);
-- agora o destino contém Hora=16, Minuto=18, Segundos=30

Exemplo 7. CASTs dos Tipos Numéricos para DATE

CAST(7, 6, 5 AS DATE);
CAST(7.4e0, 6.5e0, 5.6e0 AS DATE);
CAST(7.6, 6.51, 5.4 AS DATE);

Exemplo 8. CASTs dos Tipos Numéricos para TIME

CAST(9, 8, 7 AS TIME);
CAST(9.4e0, 8.6e0, 7.1234567e0 AS TIME);
CAST(9.6, 8.4, 7.7654321 AS TIME);

Exemplo 9. CASTs para TIMESTAMP

CAST(DATE '0001-02-03', TIME '04:05:06' AS TIMESTAMP);
CAST(2, 3, 4, 5, 6, 7.8 AS TIMESTAMP);

Exemplo 10. CASTs para GMTTIMESTAMP

CAST(DATE '0002-03-04', GMTTIME '05:06:07' AS GMTTIMESTAMP);
CAST(3, 4, 5, 6, 7, 8 AS GMTTIMESTAMP);
CAST(3.1e0, 4.2e0, 5.3e0, 6.4e0, 7.5e0, 8.6789012e0 AS GMTTIMESTAMP);
CAST(3.2, 4.3, 5.4, 6.5, 7.6, 8.7890135 AS GMTTIMESTAMP);

Exemplo 11. CASTs para INTERVAL de INTEGER

CAST(1234 AS INTERVAL YEAR);
CAST(32, 10 AS INTERVAL YEAR   TO MONTH );
CAST(33, 11 AS INTERVAL DAY    TO HOUR  );
CAST(34, 12 AS INTERVAL HOUR   TO MINUTE);
CAST(35, 13 AS INTERVAL MINUTE TO SECOND);
CAST(36, 14, 10  AS INTERVAL DAY  TO MINUTE);
CAST(37, 15, 11  AS INTERVAL HOUR TO SECOND);
CAST(38, 16, 12, 10 AS INTERVAL DAY TO SECOND);

Exemplo 12. CASTs para INTERVAL de FLOAT

CAST(2345.67e0   AS INTERVAL YEAR  );
CAST(3456.78e1   AS INTERVAL MONTH );
CAST(4567.89e2   AS INTERVAL DAY   );
CAST(5678.90e3   AS INTERVAL HOUR  );
CAST(6789.01e4   AS INTERVAL MINUTE);
CAST(7890.12e5   AS INTERVAL SECOND);
CAST(7890.1234e0 AS INTERVAL SECOND);

Exemplo 13. CASTs para INTERVAL de DECIMAL

CAST(2345.67   AS INTERVAL YEAR  );
CAST(34567.8   AS INTERVAL MONTH );
CAST(456789    AS INTERVAL DAY   );
CAST(5678900   AS INTERVAL HOUR  );
CAST(67890100  AS INTERVAL MINUTE);
CAST(789012000 AS INTERVAL SECOND);
CAST(7890.1234 AS INTERVAL SECOND);

Exemplo 14. CASTs para FLOAT de INTERVAL

CAST(INTERVAL '1234' YEAR   AS FLOAT);
CAST(INTERVAL '2345' MONTH  AS FLOAT);
CAST(INTERVAL '3456' DAY    AS FLOAT);
CAST(INTERVAL '4567' HOUR   AS FLOAT);
CAST(INTERVAL '5678' MINUTE AS FLOAT);
CAST(INTERVAL '6789.01' SECOND AS FLOAT);

Exemplo 15. CASTs DECIMAL de INTERVAL

CAST(INTERVAL '1234' YEAR   AS DECIMAL);
CAST(INTERVAL '2345' MONTH  AS DECIMAL);
CAST(INTERVAL '3456' DAY    AS DECIMAL);
CAST(INTERVAL '4567' HOUR   AS DECIMAL);
CAST(INTERVAL '5678' MINUTE AS DECIMAL);
CAST(INTERVAL '6789.01' SECOND AS DECIMAL);

Exemplo 16. Uma Coerção Ternária que Falha e Resulta na Substituição de um Valor Padrão

CAST(7, 6, 32 AS DATE DEFAULT DATE '1947-10-24');

Exemplo 17. Uma Coerção Sexternária que Falha e Resulta na Substituição de um Valor Padrão

CAST(2, 3, 4, 24, 6, 7.8 AS TIMESTAMP DEFAULT TIMESTAMP '1947-10-24 07:08:09');

Exemplo 18. Uma Coerção Ternária que Falha e Emite uma Exceção

BEGIN
  DECLARE EXIT HANDLER FOR SQLSTATE LIKE '%' BEGIN
    SET OutputRoot.XMLNS.Data.Date.FromIntegersInvalidCast = 'Exception thrown';
    END;

  DECLARE Dummy CHARACTER CAST(7, 6, 32 AS DATE);
  END;

Exemplo 19. Uma Coerção Sexternária que Falha e Emite uma Exceção

BEGIN
  DECLARE EXIT HANDLER FOR SQLSTATE LIKE '%' BEGIN
    SET OutputRoot.XMLNS.Data.Timestamp.FromIntegersInvalidCast = 'Exception thrown';
    END;

  DECLARE Dummy CHARACTER CAST(2, 3, 4, 24, 6, 7.8 AS TIMESTAMP);
  END;
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:29:57


Tópico de ReferênciaTópico de Referência | Versão 8.0.0.5 | ak05610_