Saya mencoba untuk mencapai sesuatu di sepanjang garis untuk masing-masing, di mana saya ingin mengambil Id pernyataan pilih kembali dan menggunakan masing-masing.
DECLARE @i int
DECLARE @PractitionerId int
DECLARE @numrows int
DECLARE @Practitioner TABLE (
idx smallint Primary Key IDENTITY(1,1)
, PractitionerId int
)
INSERT @Practitioner
SELECT distinct PractitionerId FROM Practitioner
SET @i = 1
SET @numrows = (SELECT COUNT(*) FROM Practitioner)
IF @numrows > 0
WHILE (@i <= (SELECT MAX(idx) FROM Practitioner))
BEGIN
SET @PractitionerId = (SELECT PractitionerId FROM @Practitioner WHERE idx = @i)
--Do something with Id here
PRINT @PractitionerId
SET @i = @i + 1
END
Saat ini saya memiliki sesuatu yang terlihat seperti di atas, tetapi saya mendapatkan kesalahan:
Nama kolom 'idx' tidak valid.
Bisakah seseorang
idx
adalah @Practitioner
tidak Practitioner
. Ada paling sering alternatif set-based yang unggul untuk setiap pendekatan, jika Anda menunjukkan apa yang Anda lakukan dengan nilai baris, mungkin sebuah alternatif dapat disarankan.
--Do something with Id here
ada, kemungkinan kami dapat menunjukkan kepada Anda bagaimana menyelesaikan masalah ini tanpa ada loop atau kursor. Dalam kebanyakan kasus, Anda ingin menggunakan solusi berbasis set, karena itulah cara SQL Server dioptimalkan untuk bekerja. Berkeliaran dan merawat satu baris pada satu waktu tentu memiliki tempatnya, tetapi saya curiga ini bukan.