2017-11-24 4 views
1

Ich habe Zweifel, warum wir die Variable einem neuen Wert zuweisen müssen, wenn wir eine gespeicherte Prozedur mit Parameter aufrufen. In der Prozedur benötigen wir 2 Variablen. und dass Variablen für die Verwendung innerhalb der Prozedur neu zugewiesen werden müssen.SQL Server PROCEDURE-Variablendeklaration

+0

Zeigen Sie Ihren Code, illustrieren Sie Ihr Problem, lesen Sie [fragen] – HoneyBadger

+0

Welches [DBMS] (https://en.wikipedia.org/wiki/DBMS) Produkt verwenden Sie? Postgres? Orakel? "_SQL_" ist nur eine Abfragesprache, nicht der Name eines bestimmten Datenbankprodukts. –

Antwort

0

Parameter Sniffing

https://blogs.msdn.microsoft.com/turgays/2013/09/10/parameter-sniffing-problem-and-possible-workarounds/

SQL Server die gespeicherten Prozeduren kompiliert mit (Sniffing) Die Parameter senden das erste Mal, dass das Verfahren kompiliert wird, und setzen es in Plancache. Jedes Mal, wenn die Prozedur erneut ausgeführt wird, ruft SQL Server den Ausführungsplan aus dem Cache ab und verwendet ihn (es sei denn, gibt es einen Grund für die Neukompilierung). Das potentielle Problem tritt auf , wenn das erste mal die gespeicherte Prozedur ausgeführt wird, erzeugen die Parameter einen akzeptablen Plan für diesen Satz von Parametern, aber sehr schlecht für andere üblichere Sätze von Parametern.

Eine der Lösungen in der bereitgestellten Verknüpfung ist die Verwendung lokaler Variablen. ZB was du schon machst.

+0

Danke für das Update –

+0

@VenkateshKopulaSivakumar Kein Problem, Sir, einen schönen Tag. – user2202098

Verwandte Themen