Como abrir um cursor SQL
Apesar de DECLARE CURSOR instrução SQL especifica as linhas a incluir no cursor, ele não realmente causar qualquer coisa para acontecer, 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 no ORDENAR POR cláusula, use o seguinte:
DECLARE CURSOR receita Modelo FORSELECT, Unidades, Preço, Unidades * Preço AS ExtPriceFROM modelo por TRANSDETAILORDER, ExtPrice DESC -Open receitas -
Você não pode buscar linhas de um cursor até que você abrir o cursor. Quando você abrir 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 de linguagem host:
EXEC SQL DECLARE CURSOR C1 FOR SELECT * FROM ORDERSWHERE ORDERS.Customer =: nameand DueDate lt; -nome CURRENT_DATE: = 'Acme Co'- // A língua de acolhimento statementEXEC SQL ABERTO C1-NAME: =' Omega Inc .'- // Outra declaração de acolhimento ... 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 de nome (Nome: = 'Omega Inc.') não tem efeito sobre as linhas que o cursor vai buscar. (Esse valor de NOME é utilizado o Próximo vez que você abrir C1.)
E mesmo se a ABERTO declaração é executado um minuto antes da meia-noite eo ATUALIZAR declaração é executada de um minuto depois da meia-noite, o valor de DATA ATUAL no ATUALIZAR declaração é o valor da função que no momento em que o ABERTO instrução executada - mesmo se DECLARE CURSOR não faz referência a função de data e hora.