sql >> Databáze >  >> RDS >> Sqlserver

Získejte výsledek z dynamického SQL v uložené proceduře

Zkusili jste něco jako:

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;

Budete se chtít ujistit, že před řetězcem nvarchar předponujete N, např. SELECT @SQL = N'SELECT ... .

Také víte, že pokud dotaz vrátí více řádků, hodnota, která bude přiřazena @FiscalYear je zcela libovolné, že? I když z této tabulky můžete očekávat jednu hodnotu, není na škodu použít MAX() nebo TOP 1 ... ORDER BY aby bylo zajištěno, že bude vždy přiřazena pouze jedna předvídatelná hodnota.



  1. Jak získat aktuální objekt Connection v Spring JDBC

  2. Reprodukujte com.mysql.jdbc.exceptions.jdbc4.CommunicationsException s nastavením Spring, hibernate a C3P0

  3. MYSQL - Výběr dat z druhého řádku ve velké tabulce

  4. Jak převést řádky na sloupce v SQL Server?