sql >> Database >  >> Database Tools >> SSMS

Hoe u SSMS 2012 kunt stoppen met het scripten van SP's met sp_executesql

U kunt dit niet doen zonder de dynamische SQL omdat een opgeslagen procedure in een eigen batch moet zitten. Daarom kun je niet zeggen:

IF <some condition>
  <start a new batch>

De enige manier om dat in dezelfde batch te houden, is door sp_executesql te gebruiken .

Als je de DROP . gaat scripten en CREATE tegelijkertijd, doe het gewoon zonder de controle op het bestaan ​​​​van het object. Dit geeft je:

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

Wat maakt het uit of de DROP mislukt? (Dat zou niet moeten, want je hebt er net een script van gemaakt!)

Als u dit script voor een ander systeem dat mogelijk het object hebt, krijgt u een foutmelding voor de DROP wanneer dat niet het geval is, maar de CREATE gebeurt nog steeds, dus u kunt de DROP . negeren fouten. Als je echt wilt, kun je de DROP handmatig inpakken uitspraken in TRY/CATCH maar ik denk niet dat het nodig is.

Als je dit voor veel procedures moet doen, of als je het proces echt nodig hebt om geen goedaardige fouten te genereren, raad ik je aan de primitieve scriptopties van Management Studio te verlaten en hiervoor een tool van derden te gebruiken. Ze hebben al veel van de problemen behandeld die u nog niet bent tegengekomen, maar die dat wel zal doen. Ik heb hierover geblogd:

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



  1. mysql:ORDER BY aantal keren dat een element in een kolom van de mysql-tabel voorkomt

  2. MYSQL-kolom voorwaardelijk selecteren

  3. phpmyadmin installeren met home-brew

  4. MySQL Workbench crasht bij opstarten op Windows