2017-04-21 2 views
2

Benutzer nicht die Werte in gespeicherten Prozedur Werten in SQL kann oder Klausel Stored Procedure übergebenWie wird der gespeicherte Prozedurparameter für den Benutzer festgelegt oder nicht?

So, wie man meine Variable deklariert in StoredProcedure und wie in definieren Wo?

Beispiel

CREATE PROC spGetRecord 
@Storeid nchar(10)=null 
AS 
BEGIN 
    SELECT ID,NAME 
    FROM table1 
    WHERE [email protected] //@Storeid is may pass the value by user or may not 
END 

Wie soll ich definieren @Storeid in Where-Klausel

Dank

Antwort

2

Ich vermute, Sie irgendeine Art von Suchverfahren bauen ...

Ein einfacher Start, überprüfen Sie, ob der Parameter entweder Storeid entspricht, oder dass t er Parameter ist null:

create proc spGetRecord (@Storeid nchar(10)=null) as 
begin 
    set nocount, xact_abort on; 

    select id,name 
    from table1 
    where ([email protected] or @Storeid is null) 
end; 

Für fortgeschrittenere Catch-all-Suchanfragen finden Sie unter:

+0

können Sie eine Erklärung für diese Zeile geben 'set nocount, xact_abort on;'? –

+2

@mohamedfaiz Die beste Erklärung ist hier: [Warum sollten Sie immer 'set xact_abort, nocount on;' - Erland Sommarskog] (http://www.sommarskog.se/error_handling/Part1.html#jumpXACT_ABORT). Es ist eine gute Praxis (imho Best Practice), sie aus vielen Gründen in Ihre Verfahren einzubeziehen. Zugegeben, Sie würden 'xact_abort' wahrscheinlich nicht für eine' select' Operation benötigen, aber es tut nicht weh. 'nocount'" unterdrückt Nachrichten wie (1 Zeile (n) betroffen) ... [welche] die Leistung in einer Anwendung aufgrund des erhöhten Netzwerkverkehrs verschlechtern. " – SqlZim

Verwandte Themen