Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вземете резултат от динамичен SQL в съхранена процедура

Опитахте ли нещо като:

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;

Ще искате да се уверите, че добавяте към низовете nvarchar префикс с N, напр. SELECT @SQL = N'SELECT ... .

Освен това знаете, че ако заявката върне няколко реда, стойността, която се присвоява на @FiscalYear е напълно произволно, нали? Въпреки че може да очаквате една единствена стойност от тази таблица, не може да навреди да използвате MAX() или TOP 1 ... ORDER BY за да се гарантира, че винаги се присвоява само една единствена предвидима стойност.



  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 DELETE оператор в SQL таблица

  2. SQL Server 2008 - Свиване на регистъра на транзакциите - Има ли начин за автоматизиране?

  3. SQL Server 2005/2008 Group By оператор с параметри без използване на динамичен SQL?

  4. Как да намерите последния ден от месеца в SQL Server

  5. SQL Server 2008 стойност за разделяне, сортиране и сливане