2013-01-08 37 views
20

İsteğe bağlı bir parametre olarak bir tablo değeri parametresiyle bir prosedür oluşturmak mümkün müdür. "Ben varsayılan değeri olan,Tablo Değeri İsteğe bağlı parametre

+0

Cevabıma bakmaya çalıştınız mı? Herhangi bir geri bildirim? –

+2

@ chuckp16 gitmenin yoludur. 'Tablo Değerli parametrelerin her zaman boş bir tablonun bir örtük değeri vardır. Yani bu prosedürü hiçbir parametreye gerek olmadan çağırabilirsiniz ve bu işlem yürütülür ancak tablo boş olur. ' – Lijo

+0

Lütfen Chuck'ın cevabını doğru olarak işaretleyin. – goodeye

cevap

48

Tablo Değerli parametreler boş bir tablonun örtülü bir değerine sahip olmak. Yani bu prosedürü hiçbir parametreden aramadan yapabilirsiniz ve yürütülür ancak tablo boş olur.

Bu nedenle, bir tablo değeri parametresini varsayılan değerle etiketlemek gerçekten anlamlı değildir. "= Null" öğesini kaldırın, tablo içeriğini kontrol edin ve gitmek için iyi olmalısınız.

2

Temelde C# .NET ile SQL sunucusu kullanmak:

Aşağıdaki kod çalıştı:

CREATE PROCEDURE SP 
@Table testteype = null READONLY 
AS 
.... 

Ama bu hatayı alıyorum:

Operand type clash: void type is incompatible with test type 

ps = null "anlamsızdır ve hatanın sebebidir.

Varsayılan olarak @Table testteype boş bir tablonun değerini alır. Böylece, = null kaldırabilir:

CREATE PROCEDURE SP 
@Table testteype READONLY 
AS 
.... 

Referans: Bu yayını kullanmak için C# ADO.NET ile bu i tavsiye ederim nasıl kullanılacağına ilişkin bir örnek için - her zaman Using SQL Server’s Table Valued Parameters

0

Yukarıdaki cevabın neden varsayılan değer oluşturduğunu bilmediğinden emin değil = NULL yanlış, ancak bu benim için çalışıyor.

CREATE PROCEDURE SP 
(
    @Param1 VARCHAR(10), 
    @Param2 VARCHAR(10)=NULL 
) 

SELECT...... 
WHERE @Param1 = SOMETHING 
AND (@Param2 = SOMETHING OR @Param2 IS NULL) 
+1

Farklı durum. Soru, özellikle * tablo değerli * parametrelerle ilgilidir. Bir varchar parametresinden farklı olarak ele alınırlar. – FishBasketGordo

İlgili konular