SQL Server'da saklı yordam oluştururken, var olmayan tablolara başvurmanıza izin verilir. Ancak, tablo varsa, yordamda başvurduğunuz herhangi bir sütun bu tabloda ( Ertelenmiş Ad Çözümlemesi ) bulunmalıdır .
SQL Server'a, var olup olmadıklarına bakılmaksızın, bir yordamda başvurulan tüm tabloların ad çözümlemesini ertelemesini bildirmek mümkün müdür? Genel sözdizimi denetimini tutmak istiyorum, bu yüzden mümkün olsa bile, saklı yordam tanımını bir sistem tablosuna kesmek bir seçenek değildir.
Bunu yapmak istemem biraz tuhaf görünebilir , bu yüzden bazı arka plan: C # ile yazılmış bir uygulamadan tablo tanımlarını ve saklı yordamları otomatik olarak oluşturuyorum ve değişiklikleri SQL gereksinimleri olarak sipariş etmek için kodu değiştirmek benim için çok zor onlar. Kodum şema bir işlem içinde tutarlı olduğunu garanti eder, ancak şu anda bunlara başvuran saklı yordamı tanımlamak önce tablo sütunları tanımlanmış garanti edemez.
Aşağıda çözmeye çalıştığım sorunu "gösteren" C # tarafından oluşturulan SQL kanonik bir örneğidir.
--Say this table already exists.
CREATE TABLE myTable
(
a NVARCHAR(MAX)
)
GO
--My C# code creates something like this
BEGIN TRAN
GO
--the stored procedure gets generated first.
CREATE PROCEDURE mySproc
AS
BEGIN
SELECT a,b FROM myTable
END
--then the table update
ALTER TABLE myTable
ADD b nvarchar(MAX)
COMMIT TRAN
O ise beni C # kodu Bunu düzeltmek için mümkün, ama basit bir "sihirli" Ben SQL indirebiliriz çimdik umuyorum. Bu benim için çok zaman kazandıracak.