Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Le stored procedure SQL non terminano quando vengono chiamate da Python

Come OP ha scoperto, l'elaborazione incoerente o incompleta delle procedure archiviate dal livello dell'applicazione come Python potrebbe essere dovuta all'allontanamento dalle migliori pratiche di scripting TSQL.

Come @AaronBetrand punti salienti in questa Elenco di controllo delle migliori pratiche per le procedure archiviate blog, considera, tra le altre cose, quanto segue:

  • Utilizza in modo esplicito e libero BEGIN ... END blocchi;
  • Usa SET NOCOUNT ON per evitare messaggi inviati al client per ogni riga interessata dall'azione, eventualmente interrompendo il flusso di lavoro;
  • Usa il punto e virgola per i terminatori di istruzioni.

Esempio

CREATE PROCEDURE dbo.myStoredProc
AS
BEGIN
   SET NOCOUNT ON;

   SELECT * FROM foo;

   SELECT * FROM bar;
END
GO