Bu kod:T-SQL 2012
SELECT * FROM sysobjects WHERE type = 'P' AND name = 'proc_name'
bir Sql 2000'de yordamını 'proc_name' bulur, ancak SQL Server 2012 bir varyasyon için değil benziyor ki bu, tarih:
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID
(N'ap_tems_delete_temp_itinerary_item]') AND type IN (N'P', N'PC')
Ayrıca
Sql 2012'de çalışmıyor ne çalışır?
AÇIKLANMASI DÜZENLENMİŞ
sorunun noktası kimse bu şablonu kullandığında şudur: Bir saklı yordam oluşturma komut dosyası oluşturmak için Visual Studio
IF EXISTS (select * from sys.procedures where name = '$SchemaQualifiedObjectName$')
BEGIN
DROP Procedure $SchemaQualifiedObjectName$
END
, bu adını üretir köşeli parantez içinde prosedür, [dbo] ile kalifiye. saklı yordam oluşturma için bu komut çalıştırıldığında Ve bu işe yaramazsa: saklı yordam adı dbo veya köşeli ayraç içermediğinden
IF EXISTS (select * from sys.procedures where name = '[dbo].[stored_proc_name]')
BEGIN
DROP Procedure [dbo].[stored_proc_name]
END
olduğunu. Onları düzenlemek zorundayım, ama zorunda kalmak istemiyorum. OBJECT_ID() kullanarak biçimi aslında çalışır, ancak bir köşeli parantez uyumsuzluğuna sahip olduğunuzda değil, bu benim sorunumun gerçekte ne olduğu ve @ Ebis'in işaret ettiği şeydir.
Ben select * from sys.procedures where name = 'stored_proc_name'
çalışır biliyoruz - ama köşeli parantez mevcut değilse.
Bu cevap aslında benim sözdizimi hatasını yakaladı - parantez uyumsuzluğu! – Cyberherbalist