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

Nhận kết quả từ SQL động trong thủ tục được lưu trữ

Bạn đã thử một cái gì đó như:

DECLARE @FiscalYear INT, @DataSource NVARCHAR(25), @SQL NVARCHAR(250);
SET @DataSource = N'CustomerCosts20120328';
SET @SQL = N'SELECT DISTINCT @FiscalYear = FiscalYear FROM ' + @DataSource;
EXEC sp_executesql @SQL, N'@FiscalYear INT OUTPUT', @FiscalYear OUTPUT;

PRINT @FiscalYear;

Bạn sẽ muốn đảm bảo rằng bạn đặt tiền tố chuỗi nvarchar bằng N, ví dụ:SELECT @SQL = N'SELECT ... .

Ngoài ra, bạn biết rằng nếu truy vấn trả về nhiều hàng, giá trị sẽ được gán cho @FiscalYear là hoàn toàn tùy tiện, phải không? Mặc dù bạn có thể mong đợi một giá trị duy nhất từ ​​bảng đó, nhưng bạn không thể sử dụng MAX() hoặc TOP 1 ... ORDER BY để đảm bảo rằng chỉ một giá trị duy nhất, có thể dự đoán được từng được chỉ định.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL JOIN so với IN hiệu suất?

  2. Trả lại các thủ tục và hàm đã lưu trữ trong cơ sở dữ liệu máy chủ SQL:ROUTINES (Ví dụ T-SQL)

  3. SQL Server - Giá trị trả về sau khi CHÈN

  4. Cách thêm nhóm người dùng Active Directory làm đăng nhập trong SQL Server

  5. Chức năng so với Thủ tục được lưu trữ