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

CHÈN VÀO @TABLE EXEC @query với SQL Server 2000

N.B. - câu hỏi và câu trả lời này liên quan đến phiên bản 2000 của SQL Server. Trong các phiên bản mới hơn, hạn chế đối với INSERT INTO @table_variable ... EXEC ... đã được dỡ bỏ và vì vậy nó không áp dụng cho các phiên bản sau này.

Bạn sẽ phải chuyển sang bảng tạm thời:

CREATE TABLE #tmp (code varchar(50), mount money)
DECLARE @q nvarchar(4000)
SET @q = 'SELECT coa_code, amount FROM T_Ledger_detail'

INSERT INTO  #tmp (code, mount)
EXEC sp_executesql (@q)

SELECT * from #tmp

Từ tài liệu:

Một biến bảng hoạt động giống như một biến cục bộ. Nó có một phạm vi được xác định rõ ràng, là hàm, thủ tục được lưu trữ hoặc lô mà nó được khai báo.

Trong phạm vi của nó, một biến bảng có thể được sử dụng như một bảng thông thường. Nó có thể được áp dụng ở bất kỳ đâu một bảng hoặc biểu thức bảng được sử dụng trong các câu lệnh SELECT, INSERT, UPDATE và DELETE. Tuy nhiên, bảng có thể không được sử dụng trong các câu lệnh sau:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tải tệp CSV lên máy chủ SQL

  2. Xóa danh sách đăng nhập và mật khẩu đã nhớ trong SQL Server Management Studio

  3. Cách khắc phục “Danh sách chọn cho câu lệnh INSERT chứa ít mục hơn danh sách chèn”

  4. Cách tạo Tập lệnh DDL (Tạo) từ SQL Server Management Studio (SSMS) - Hướng dẫn sử dụng SQL Server / TSQL Phần 17

  5. Có cách nào để lặp qua biến bảng trong TSQL mà không sử dụng con trỏ không?