Oke, saya bukan ahli SQL atau DBA, jadi jika ada cara yang lebih baik untuk melakukan ini, silakan angkat bicara.
Namun yang perlu saya lakukan secara khusus adalah meningkatkan Stored Procedure yang sudah ada yang menggunakan SQL dinamis untuk tidak memasukkan nilai duplikat. SQL sendiri ketika spesifik untuk satu tabel adalah hal yang mudah. Namun saat ini, saya mengalami masalah dengan proses tersimpan generik yang saya miliki yang berfungsi secara umum untuk beberapa tabel dan menggunakan TSQL. Masalahnya ada pada pernyataan BEGIN dan END.
SET @Query = 'IF NOT EXISTS (SELECT ' + @DescriptionFieldName + '
FROM '+ @TableName +'
WHERE (' + @DescriptionFieldName + ' = ''' + @DescriptionValue + ''')
BEGIN
INSERT INTO '+ @TableName +' (' + @DescriptionFieldName + ', LastUser, LastUpdate) VALUES ('''+ ISNULL(@DescriptionValue, '') +''', '''+ ISNULL(@LastUser, '') +''',Convert(Varchar, GetDate())) ' + 'SELECT CAST(scope_identity() AS int);
END'
EXEC (@Query)
Ketika saya mengubah EXEC menjadi PRINT, semuanya tampak baik secara sintaksis, tetapi memberikan kesalahan berikut saat menggunakan EXEC:
"Sintaks salah di dekat kata kunci 'BEGIN'."
Adakah yang punya ide tentang cara memperbaiki masalah ini sehingga kueri dapat berfungsi?
Terima kasih!