Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Biến máy chủ SQL:vòng lặp so với bản sao?

Việc đặt DECLARE là phi quan trọng (ngoại trừ trình phân tích cú pháp sẽ không cho phép bạn thử và sử dụng nó trước DECLARE )

Nó chỉ thực sự khai báo một biến bất kể khối mã chứa khai báo được thực thi bao nhiêu lần.

DECLARE bản thân nó không phải là một câu lệnh thực thi. ví dụ:

IF 1 = 0
BEGIN
DECLARE @I INT
END

SELECT @I

Hoạt động tốt mặc dù khối đó không bao giờ được nhập. Bộ nhớ cho các biến được dành riêng tại thời điểm biên dịch trước khi thực thi truy vấn thậm chí bắt đầu trong ngữ cảnh thực thi .

Một cách để thấy điều này là

DBCC FREEPROCCACHE;

GO

SELECT  m2.pages_allocated_count
        --If 2012 use the next line instead
        --,m2.pages_in_bytes/m2.page_size_in_bytes as pages_allocated_count
        ,m2.page_size_in_bytes
FROM   sys.dm_exec_cached_plans cp
       CROSS apply sys.dm_exec_sql_text(cp.plan_handle) t
       JOIN sys.dm_os_memory_objects m1 ON m1.memory_object_address = cp.memory_object_address
       JOIN sys.dm_os_memory_objects m2 ON m1.page_allocator_address = m2.page_allocator_address
WHERE  text LIKE '%this query%'
 AND m2.type = 'MEMOBJ_EXECUTE'

DECLARE @A0 VARCHAR(8000);
DECLARE @A1 VARCHAR(8000);
DECLARE @A2 VARCHAR(8000);
DECLARE @A3 VARCHAR(8000);
DECLARE @A4 VARCHAR(8000);
DECLARE @A5 VARCHAR(8000);
DECLARE @A6 VARCHAR(8000);
DECLARE @A7 VARCHAR(8000);
DECLARE @A8 VARCHAR(8000);
DECLARE @A9 VARCHAR(8000);
DECLARE @A10 VARCHAR(8000);
DECLARE @A11 VARCHAR(8000);
DECLARE @A12 VARCHAR(8000);
DECLARE @A13 VARCHAR(8000);
DECLARE @A14 VARCHAR(8000);
DECLARE @A15 VARCHAR(8000);
DECLARE @A16 VARCHAR(8000);
DECLARE @A17 VARCHAR(8000);
DECLARE @A18 VARCHAR(8000);
DECLARE @A19 VARCHAR(8000);
DECLARE @A20 VARCHAR(8000);

hiển thị bộ nhớ dành riêng cho truy vấn hiện tại, nếu bạn điều chỉnh số lượng biến được khai báo, bạn sẽ thấy bộ nhớ dành riêng thay đổi mặc dù DECLARE khối ở ngay cuối đợt.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bạn xác định chuỗi mẫu bản ghi trong bản ghi bằng TSQL?

  2. Linq-to-SQL để chỉ tìm kiếm các phần DATE của một ngày

  3. Cập nhật một trường của bảng hiện có với Logic Tăng dần Tự động

  4. Lấy Id của một hàng tôi đã cập nhật trong Máy chủ Sql

  5. Cách chèn hàng trong Bảng SQL Server bằng cách chỉnh sửa GUI hàng bảng - Hướng dẫn SQL Server / TSQL Phần 101