Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL di Microsoft Fabric
Menentukan tingkat pelaporan kesalahan yang dihasilkan saat pembulatan dalam ekspresi menyebabkan hilangnya presisi.
Sintaks
SET NUMERIC_ROUNDABORT { ON | OFF }
Keterangan
Saat SET NUMERIC_ROUNDABORT AKTIF, kesalahan dihasilkan setelah hilangnya presisi terjadi dalam ekspresi. Jika diatur ke NONAKTIF, kehilangan presisi tidak menghasilkan pesan kesalahan. Hasilnya dibulatkan ke presisi kolom atau variabel yang menyimpan hasilnya.
Hilangnya presisi terjadi ketika Anda mencoba menyimpan nilai dengan presisi tetap dalam kolom atau variabel dengan presisi yang lebih sedikit.
Jika SET NUMERIC_ROUNDABORT AKTIF, SET ARITHABORT menentukan tingkat keparahan kesalahan yang dihasilkan. Tabel ini menunjukkan efek dari kedua pengaturan ini ketika hilangnya presisi terjadi.
| Pengaturan | SET NUMERIC_ROUNDABORT AKTIF | SET NUMERIC_ROUNDABORT NONAKTIF |
|---|---|---|
| SET ARITHABORT AKTIF | Kesalahan dihasilkan; tidak ada set hasil yang dikembalikan. | Tidak ada kesalahan atau peringatan; hasil dibulatkan. |
| ATUR ARITHABORT NONAKTIF | Peringatan dikembalikan; ekspresi mengembalikan NULL. | Tidak ada kesalahan atau peringatan; hasil dibulatkan. |
Pengaturan SET NUMERIC_ROUNDABORT diatur pada waktu eksekusi atau run time dan bukan pada waktu penguraian.
SET NUMERIC_ROUNDABORT harus NONAKTIF saat Anda membuat atau mengubah indeks pada kolom komputasi atau tampilan terindeks. Jika SET NUMERIC_ROUNDABORT AKTIF, pernyataan berikut pada tabel dengan indeks pada kolom komputasi atau tampilan terindeks gagal:
- CREATE
- UPDATE
- INSERT
- DELETE
Untuk informasi selengkapnya tentang pengaturan opsi SET yang diperlukan dengan tampilan dan indeks terindeks pada kolom komputasi, lihat Pertimbangan Saat Anda Menggunakan Pernyataan SET.
Untuk menampilkan pengaturan saat ini untuk pengaturan ini, jalankan kueri berikut:
DECLARE @NUMERIC_ROUNDABORT VARCHAR(3) = 'OFF';
IF ( (8192 & @@OPTIONS) = 8192 ) SET @NUMERIC_ROUNDABORT = 'ON';
SELECT @NUMERIC_ROUNDABORT AS NUMERIC_ROUNDABORT;
Izin
Memerlukan keanggotaan dalam peran publik .
Contoh
Contoh berikut menunjukkan dua nilai yang tepat untuk empat tempat desimal. Mereka ditambahkan dan disimpan dalam variabel yang tepat untuk dua tempat desimal. Ekspresi menunjukkan efek dari pengaturan dan SET NUMERIC_ROUNDABORT yang berbedaSET ARITHABORT.
-- SET NOCOUNT to ON,
-- SET NUMERIC_ROUNDABORT to ON, and SET ARITHABORT to ON.
SET NOCOUNT ON;
PRINT 'SET NUMERIC_ROUNDABORT ON';
PRINT 'SET ARITHABORT ON';
SET NUMERIC_ROUNDABORT ON;
SET ARITHABORT ON;
GO
DECLARE @result DECIMAL(5, 2),
@value_1 DECIMAL(5, 4),
@value_2 DECIMAL(5, 4);
SET @value_1 = 1.1234;
SET @value_2 = 1.1234 ;
SELECT @result = @value_1 + @value_2;
SELECT @result;
GO
-- SET NUMERIC_ROUNDABORT to ON and SET ARITHABORT to OFF.
PRINT 'SET NUMERIC_ROUNDABORT ON';
PRINT 'SET ARITHABORT OFF';
SET NUMERIC_ROUNDABORT ON;
SET ARITHABORT OFF;
GO
DECLARE @result DECIMAL(5, 2),
@value_1 DECIMAL(5, 4),
@value_2 DECIMAL(5, 4);
SET @value_1 = 1.1234;
SET @value_2 = 1.1234 ;
SELECT @result = @value_1 + @value_2;
SELECT @result;
GO
-- SET NUMERIC_ROUNDABORT to OFF and SET ARITHABORT to ON.
PRINT 'SET NUMERIC_ROUNDABORT OFF';
PRINT 'SET ARITHABORT ON';
SET NUMERIC_ROUNDABORT OFF;
SET ARITHABORT ON;
GO
DECLARE @result DECIMAL(5, 2),
@value_1 DECIMAL(5, 4),
@value_2 DECIMAL(5, 4);
SET @value_1 = 1.1234;
SET @value_2 = 1.1234 ;
SELECT @result = @value_1 + @value_2;
SELECT @result;
GO
-- SET NUMERIC_ROUNDABORT to OFF and SET ARITHABORT to OFF.
PRINT 'SET NUMERIC_ROUNDABORT OFF';
PRINT 'SET ARITHABORT OFF';
SET NUMERIC_ROUNDABORT OFF;
SET ARITHABORT OFF;
GO
DECLARE @result DECIMAL(5, 2),
@value_1 DECIMAL(5, 4),
@value_2 DECIMAL(5, 4);
SET @value_1 = 1.1234;
SET @value_2 = 1.1234;
SELECT @result = @value_1 + @value_2;
SELECT @result;
GO
Lihat Juga
Tipe Data (Transact-SQL)
Pernyataan SET (Transact-SQL)
ATUR ARITHABORT (Transact-SQL)