SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Cách ngăn SSMS 2012 khỏi SP script bằng sp_executesql

Bạn không thể làm điều này mà không có SQL động vì một thủ tục được lưu trữ phải nằm trong lô riêng của nó. Do đó bạn không thể nói:

IF <some condition>
  <start a new batch>

Cách duy nhất để giữ nó trong cùng một lô là sử dụng sp_executesql .

Nếu bạn định viết kịch bản cho DROPCREATE đồng thời, chỉ cần làm điều đó mà không cần kiểm tra sự tồn tại của đối tượng. Điều này sẽ cung cấp cho bạn:

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

Ai quan tâm nếu DROP không thành công? (Không nên, bởi vì bạn chỉ viết kịch bản từ nó!)

Nếu bạn đang viết tập lệnh này cho một hệ thống khác có thể có đối tượng, bạn sẽ nhận được thông báo lỗi cho DROP khi nó không, nhưng CREATE sẽ vẫn xảy ra, vì vậy bạn có thể bỏ qua DROP các lỗi. Nếu bạn thực sự muốn, bạn có thể quấn DROP theo cách thủ công câu lệnh trong TRY/CATCH nhưng tôi không nghĩ nó cần thiết.

Nếu bạn cần thực hiện việc này cho nhiều quy trình hoặc nếu bạn thực sự cần quy trình để không tạo ra các lỗi lành tính, tôi khuyên bạn nên từ bỏ các tùy chọn tập lệnh ban đầu của Management Studio và sử dụng công cụ của bên thứ ba cho việc này. Họ đã giải quyết nhiều vấn đề mà bạn chưa gặp phải, nhưng sẽ làm được. Tôi đã viết blog về điều này:

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



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Làm rõ SQL Server ISNUMERIC ()

  2. Làm cách nào để đặt thuộc tính Allow Nulls trong trình thiết kế bảng của SSMS thành luôn sai?

  3. Cách kết nối với LocalDb

  4. Trong SSMS, làm cách nào để thay đổi tên tab của cửa sổ truy vấn SQL?

  5. Làm cách nào để Management Studio biết cách lưu các nhận xét T-SQL của tôi?