de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Pengguna anonim
Question

SQL "IF", "BEGIN", "END", "END IF"?

Sama sekali bukan orang SQL. Memiliki kode berikut yang ditulis konsultan.

Pertama, memastikan hanya sekolah dasar yang dipilih - kemudian, setelah BEGIN, jika variabel @Term sama dengan 3, kami ingin melakukan hal-hal di bawah pernyataan IF itu. Inilah masalahnya. Ketika @Term tidak = 3, kita masih ingin turun ke bawah dan melakukan INSERT KEDUA ke bagian @Classes. FYI - Term adalah = 3 ketika ini dijalankan, tetapi tidak melakukan kedua INSERT's - haruskah ada END IF di akhir bagian "IF @Term = 3 &" bukan hanya END biasa?

IF @SchoolCategoryCode = 'Elem' 

--- We now have determined we are processing an elementary school...

BEGIN

---- Only do the following if the variable @Term equals a 3 - if it does not, skip just this first part

    IF @Term = 3

    BEGIN

        INSERT INTO @Classes

        SELECT      
        XXXXXX  
        FROM XXXX blah blah blah

    END   <----(Should this be ENDIF?)

---- **always** "fall thru" to here, no matter what @Term is equal to - always do the following INSERT for all elementary schools

    INSERT INTO @Classes    
    SELECT
    XXXXXXXX    
    FROM XXXXXX (more code) 

END
40 2008-12-31T21:07:32+00:00 3
 MrBoJangles
MrBoJangles
Pertanyaan edit 10 Januari 2012 в 9:44
Pemrograman
sql
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Charles Bretana
Charles Bretana
31 Desember 2008 в 9:12
2008-12-31T21:12:14+00:00
Lebih
Sumber
Sunting
#8717781

Jika ini adalah MS Sql Server, maka apa yang Anda miliki seharusnya berfungsi dengan baik... Bahkan, secara teknis, Anda tidak memerlukan Begin & End sama sekali, karena hanya ada satu pernyataan di blok begin-End... (Saya asumsikan @Classes adalah variabel tabel?)

If @Term = 3
   INSERT INTO @Classes
    SELECT                  XXXXXX  
     FROM XXXX blah blah blah
-- -----------------------------

 -- This next should always run, if the first code did not throw an exception... 
 INSERT INTO @Classes    
 SELECT XXXXXXXX        
 FROM XXXXXX (more code)
3
0
 mattruma
mattruma
31 Desember 2008 в 9:12
2008-12-31T21:12:39+00:00
Lebih
Sumber
Sunting
#8717782

Jika saya ingat dengan benar, dan lebih sering saya lakukan ... tidak ada dukungan END IF di Transact-Sql. BEGIN dan END harus melakukan pekerjaan itu. Apakah Anda mendapatkan error?

1
0
Michael Bray
Michael Bray
31 Desember 2008 в 9:17
2008-12-31T21:17:21+00:00
Lebih
Sumber
Sunting
#8717783

Berdasarkan deskripsi Anda tentang apa yang ingin Anda lakukan, kodenya tampaknya benar seperti apa adanya. ENDIF bukanlah kata kunci kontrol loop SQL yang valid. Apakah Anda yakin bahwa INSERTS benar-benar menarik data untuk dimasukkan ke dalam @Class? Faktanya, jika itu buruk, itu tidak akan berjalan.

Apa yang mungkin ingin Anda coba adalah meletakkan beberapa pernyataan PRINT di sana. Letakkan PRINT di atas setiap INSERTS hanya mengeluarkan beberapa teks konyol untuk menunjukkan bahwa baris tersebut sedang dijalankan. Jika Anda mendapatkan kedua output, maka SELECT...INSERT... Anda dicurigai. Anda juga bisa melakukan SELECT sebagai pengganti PRINT (yaitu, tanpa INSERT) dan melihat dengan tepat data apa yang ditarik.

0
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 14 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi