2012-07-23 12 views
9

Bir MSSQL komut dosyasını Oracle'a dönüştürüyorum ve bir tablo adı veya sütun yerine bir değişken kullanmak için sözdizimini çözemedik. VR_TABLE her yineleme değişmiş alacak değişken tablo adını iseOracle SQL: tablo adlarının yerine kullanılan değişkenler

set serveroutput on format wrapped; 
declare 
    VR_TABLE VARCHAR2(256); 
    VR_UPDATE VARCHAR2(256); 
begin 
    VR_TABLE :='SYSTEM_STATUS'; 
    EXECUTE IMMEDIATE 'select UPDATE_VERSION INTO VR_UPDATE from ' || VR_TABLE || 'where rownum < 2 ;' 
end; 

: Burada

Ben bu yüzden daha iyi sözdizimi anlayabileceği Oracle SQL Developer işi yapmaya oldum o basit bir örnek döngünün Birisi yanlış yaptığımı işaret edebilir mi, yoksa beni okumak için yararlı olabilecek bir siteye yönlendirebilir mi? Bununla ilgili birkaç ders okudum, ama şimdiye kadar hiç şansım olmadı.

cevap

15
  1. Sen tablo adı ve
  2. INTO ihtiyaçları EXECUTE IMMEDIATE parçası, dinamik SQL deyiminin değil parçası olmak müteakip WHERE maddesi arasında bir boşluk olması gerekir.
  3. dinamik SQL deyimi birlikte bu koyarak bir noktalı virgül

bitmelidir bir eğik noktalı virgül

  • EXECUTE IMMEDIATE deyimi olmamalıdır, böyle bir şey, çünkü Tabii

    declare 
        VR_TABLE VARCHAR2(256); 
        VR_UPDATE VARCHAR2(256); 
    begin 
        VR_TABLE :='SYSTEM_STATUS'; 
        EXECUTE IMMEDIATE 'select UPDATE_VERSION from ' || VR_TABLE || ' where rownum < 2' 
           INTO VR_UPDATE; 
    end; 
    

    çalışması gerekir VR_UPDATE ile hiçbir şey yapmıyorsunuz, bu anonim blok yürütüldüğünde hiçbir şey görüntülenmeyecek.