Upaya kedua Anda tidak berhasil karena, berdasarkan entri Buku On-Line untuk PEMBARUAN
, SQL CE tidak mengizinkan FROM
klausa dalam pernyataan pembaruan.
Saya tidak memiliki SQL Compact Edition untuk mengujinya, tetapi ini mungkin berhasil:
UPDATE JOBMAKE
SET WIP_STATUS = '10sched1'
WHERE EXISTS (SELECT 1
FROM JOBVISIT AS JV
WHERE JV.JBT_TYPE = JOBMAKE.JBT_TYPE
AND JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER
AND JV.JVST_ID = @jvst_id
)
Mungkin Anda bisa alias JOBMAKE sebagai JM untuk membuat kueri sedikit lebih pendek.
EDIT
Saya tidak 100% yakin dengan batasan SQL CE karena terkait dengan pertanyaan yang diajukan di komentar (bagaimana cara memperbarui nilai dalam JOBMAKE menggunakan nilai dari JOBVISIT). Mencoba merujuk ke konten klausa EXISTS di kueri luar tidak didukung dalam dialek SQL apa pun yang saya temui, tetapi ada metode lain yang dapat Anda coba. Ini belum diuji tetapi dapat berfungsi, karena sepertinya SQL CE mendukung subkueri yang berkorelasi:
UPDATE JOBMAKE
SET WIP_STATUS = (SELECT JV.RES_CODE
FROM JOBVISIT AS JV
WHERE JV.JBT_TYPE = JOBMAKE.JBT_TYPE
AND JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER
AND JV.JVST_ID = 20
)
Ada batasan, namun. Kueri ini akan gagal jika lebih dari satu baris di JOBVISIT disetel ulang untuk setiap baris di JOBMAKE. Jika ini tidak berhasil (atau Anda tidak dapat langsung membatasi kueri dalam ke satu baris per baris luar), akan mungkin untuk melakukan pembaruan baris demi baris menggunakan kursor.