Kayıtlı yordam parametrelerimden birini isteğe bağlı olarak ayarlayabildiğimi bilmek isterim.SQL Server: Saklı yordamda isteğe bağlı değişken
cevap
Saklı yordam parametresine bir varsayılan değer sağlamak onu isteğe bağlı hale getirecektir.
DÜZENLEME:
PROC [EDURE] [sahibi CREATE. ]
procedure_name [; sayı]
[{@parameter veri_türü}
[DEĞİŞEN] [= varsayılan] [ÇIKTI]
] [, ... n]parametresinin varsayılan değeri
varsayılan. Bir varsayılan tanımlanırsa, prosedürü, bu parametre için değeri belirtilmeksizin yürütülebilir. Varsayılan bir sabit olmalı veya NULL olabilir. Prosedür LIKE anahtar sözcüğü ile parametre kullanıyorsa joker karakterleri (%, _, [] ve [^]) içerebilir.
bakınız
- http://msdn.microsoft.com/en-us/library/aa258259%28SQL.80%29.aspxEvet. Saklı yordamı oluşturduğunuzda
CREATE PROCEDURE MyProcedure
@param1 int,
@param2 varchar(200),
@thing_id int = NULL
AS
If @thing_id IS NULL Begin
/* ... */
End
END
, bu
Create Proc MyProc
@Param1 VarChar (20),
@Param2 VarChar (20) = NULL
AS
-- Your code here
GO
Param1 gibi oluşturun edilir: Liste parametre listesinin sonunda "isteğe bağlı" parametreleri ve onlara bir varsayılan değer (genellikle NULL) vermek zorunlu
Param2 evet yapabilirsiniz, bu kod getirecek SQL enjeksiyon sevinç kenara bırakırsak
Teşekkür ederim Raj. Bu kolay –
İsteğe olduğunu. Sen parametreleri
CREATE PROCEDURE DoStuff @param1 varchar(20) = null
için varsayılan bir değer ayarlayabilirsiniz Sonra saklı yordam
IF @param1 IS NOT NULL
BEGIN
... Do stuff
END
içeride İstediğiniz şey olmak varsayılan değer ayarlayabilirsiniz.
CREATE PROCEDURE SQL_INJECTION(
@MandatoryA int,
@MandatoryB varchar(50),
@MandatoryC datetime,
@OptionalA varchar(50) = NULL
)
AS
-- PUT YOUR DYNAMIC SQL HERE
GO
aramak için
EXEC dbo.SQL_INJECTION @MandatoryA = 1, @MandatoryB = 'test', @MandatoryC = '2009-10-05', @OptionalA = DEFAULT
Not 1: Dinamik SQL = SQL Enjeksiyon
oldu "Dinamik SQL = SQL Injection" mutlaka doğru değildir. Dinamik SQL dizginizi oluşturmak için kullanıcı tarafından sağlanan değerleri kullanıp kullanmayacağınıza bağlıdır. Saklı yordamda yalnızca mantık temelinde dinamik bir SQL dizesi oluşturabilir, ardından kullanıcı tarafından sağlanan değerleri parametreler aracılığıyla dinamik ifadeye geçirebilirsiniz.OP'nin kodu SQL enjeksiyona açık olacaktı, ancak tüm Dinamik SQL'ler açık değil. – nicko
- 1. Saklı yordamda işlemi bastırın
- 2. Swift: İsteğe bağlı değişken
- 3. Saklı yordamda C# işlevi nasıl çağrılır?
- 4. Makroya isteğe bağlı değişken ekleme
- 5. SQL Server: koşul saklı yordam
- 6. SQL Server Sorgu Bildirimleri saklı yordamını kullanarak
- 7. isteğe bağlı parametreler proc?
- 8. İsteğe bağlı değişken Drupal hook_menu uygulamasında
- 9. Depolanan yordamda sql hatası nasıl alınır
- 10. Saklı yordamda bir değişkene Select atama
- 11. Saklı yordamda yeni bir kılavuz nasıl oluşturulur?
- 12. SQL Server saklı yordam satırı numarası sorunu
- 13. SQL Server saklı yordam dönüş kodu tuhaflık
- 14. SQL Server: Saklı yordamından benzersiz tanımlayıcıyı döndür
- 15. SQL Server 2008
- 16. İç içe geçmiş saklı yordamları saklı yordamları aramada kullanın Sql Server 2008
- 17. İsteğe bağlı özellik
- 18. Sorgu hızlı çalışıyor, ancak saklı yordamda yavaş çalışıyor
- 19. MATLAB işlevlerinde isteğe bağlı hatalar
- 20. Hızlı isteğe bağlı bağlantıya sahip isteğe bağlı birleştirme hala
- 21. Swift 2.2 isteğe bağlı/isteğe bağlı istekleri keser
- 22. Salatalıkta isteğe bağlı parametre
- 23. İsteğe bağlı (nil)
- 24. Raylar, isteğe bağlı parametreler
- 25. Ninj. İsteğe Bağlı Enjeksiyon
- 26. İsteğe Bağlı PORTlar?
- 27. Verilen isteğe bağlı koleksiyon
- 28. Regex isteğe bağlı tırnak
- 29. Linq isteğe bağlı parametreler
- 30. İsteğe bağlı değişken için boş bir sözlük nasıl oluşturulur VB.NET
@Joel: o sonlarına doğru, isteğe bağlı parametreleri sahip olmak gerekli mi? Bence, kullanılabilirlik bakış açısından bunu yapmak daha iyidir. Bu doğru mu? – shahkalpesh
Hayır, ama kesinlikle en iyi uygulama. –