Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa yang menyebabkan perilaku SQL yang aneh ini?

Kode Anda berperilaku seperti yang diharapkan. Prosedur ini menyebut dirinya sendiri secara rekursif .

Jika Anda tidak mau itu, coba ini:

ALTER PROCEDURE dbo.Test 
    @Value int = null

AS

BEGIN

    IF (IsNull(@Value, '') = '')
        SELECT 'I am NULL!'
    ELSE
        SELECT 'I am ' + CONVERT(varchar(20), @Value)

END

GO

EXEC dbo.Test

Jika Anda ingin untuk menggunakan rekursi, Anda harus mendefinisikan kasus dasar (AKA "kondisi keluar") yang akan membuat prosedur tersimpan keluar dari tumpukan rekursi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah dalam menerapkan proyek DB

  2. SQL Urutkan String Numerik Setelah Split

  3. Pilih baris teratas hingga nilai di kolom tertentu muncul dua kali

  4. Ganti spasi duplikat dengan satu spasi di T-SQL

  5. Menggunakan kolom turunan fungsi peringkat di mana klausa (SQL Server 2008)