Como abrir um cursor sql

Apesar de DECLARE CURSOR instrução SQL especifica quais linhas de incluir no cursor, que na verdade não causar nada aconteça porque DECLARAR é apenas uma declaração e não uma instrução executável. o ABERTO declaração traz o cursor para a existência. Ele tem a seguinte forma:

ABERTO cursor-name -

Para abrir o cursor na ORDENAR POR cláusula, use o seguinte:

DECLARE CURSOR receita Modelo FORSELECT, Unidades, Preço, Unidades * Preço AS ExtPriceFROM por modelo TRANSDETAILORDER, ExtPrice DESC -open receita -


Você não pode buscar linhas de um cursor até que você abrir o cursor. Quando você abre um cursor, os valores das variáveis ​​referenciado no DECLARE CURSOR declaração se tornar fixo, como fazem todas as funções de data e hora atuais. Considere o seguinte exemplo de SQL incorporado em um programa em linguagem de host:

EXEC SQL DECLARE C1 CURSOR FOR SELECT * FROM ORDERSWHERE ORDERS.Customer =: nameand DueDate lt; -name CURRENT_DATE: = `Acme Co`- // A língua de acolhimento statementEXEC SQL ABERTO C1-NAME: =` Omega Inc .`- // Outra declaração anfitrião ... ORDENS DE ATUALIZAÇÃO EXEC SQL SET DueDate = CURRENT_DATE-

o ABERTO declaração corrige o valor de todas as variáveis ​​referenciadas no cursor declarar e também corrige um valor para todas as funções de data e hora atuais. Como resultado, a segunda atribuição para a variável nome (Nome: = ‘Omega Inc.’) não tem efeito nas linhas que o cursor vai buscar. (Esse valor de NOME é utilizado o Próximo vez que você abrir C1.)

E mesmo se o ABERTO declaração é executado um minuto antes da meia-noite eo ATUALIZAR declaração é executado um minuto depois da meia-noite, o valor de DATA ATUAL no ATUALIZAR declaração é o valor dessa função no momento da ABERTO instrução executada - mesmo se DECLARE CURSOR não faz referência a função de data e hora.


Publicações relacionadas