sql >> Databáze >  >> Database Tools >> SSMS

Jak zastavit SSMS 2012 ve skriptování SP pomocí sp_executesql

Bez dynamického SQL to nemůžete udělat, protože uložená procedura musí být ve své vlastní dávce. Proto nemůžete říci:

IF <some condition>
  <start a new batch>

Jediný způsob, jak to udržet ve stejné dávce, je použít sp_executesql .

Pokud se chystáte skriptovat DROP a CREATE současně to prostě udělejte bez kontroly existence objektu. To vám dá:

DROP PROCEDURE ...;
GO
CREATE PROCEDURE ...;
GO

Koho zajímá, jestli DROP selže? (Nemělo by, protože jste z něj právě vytvořili skript!)

Pokud to skriptujete pro jiný systém, možná mít objekt, zobrazí se chybová zpráva pro DROP když ne, ale CREATE bude stále probíhat, takže DROP můžete ignorovat chyby. Pokud opravdu chcete, můžete ručně zabalit DROP příkazy v TRY/CATCH ale nemyslím si, že je to nutné.

Pokud to potřebujete udělat pro mnoho procedur nebo pokud opravdu potřebujete, aby proces negeneroval neškodné chyby, doporučuji vám opustit možnosti primitivního skriptování Management Studio a použít k tomu nástroj třetí strany. Už se vypořádali s mnoha problémy, se kterými jste se ještě nesetkali, ale budou. Napsal jsem o tom blog:

http:// bertrandaaron.wordpress.com/2012/04/20/re-blog-the-cost-of-reinventing-the-wheel/



  1. Jak vybrat všechny záznamy z tabulky kromě posledních 100

  2. Vytvoření UNIKÁTNÍHO omezení pro více sloupců v diagramu EER MySQL Workbench

  3. phpmyadmin čas automatického odhlášení

  4. Jak upravit data v mřížce výsledků v SQL Server Management Studio