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

'Dynamická' uložená procedura

Zde musím uhodnout datové typy a nechám vás, abyste doplnili další chmýří.

DECLARE @sql NVARCHAR(MAX) = N'SELECT ... 
  FROM dbo.XML_TEST_SET_OVERVIEW -- always use schema prefix
  WHERE ENVId = @MyENVId'

    + CASE WHEN @MyUId IS NOT NULL THEN 
           N' AND UId = @MyUId' ELSE '' END
    + CASE WHEN @MyMTId IS NOT NULL THEN 
           N' AND MTId = @MyMTId' ELSE '' END
    + CASE WHEN @MyTestSetName IS NOT NULL THEN 
           N' AND TestSetName = @MyTestSetName' ELSE '' END 
      ...
    + CASE WHEN @MyTransactionSeqNo IS NOT NULL THEN
           N' AND TransactionSeqNo = @MyTransactionSeqNo' ELSE '' END

    + N' ORDER BY ENVId, UId, ...;';

EXEC sp_executesql @sql, 
    N'@MyENVId INT, @MyUId INT, @MyMTId INT, 
      @MyTestSetName NVARCHAR(32), ... , @MyTransactionSeqNo INT',
    @MyENVId, @MyUId, @MyMTId, @MyTestSetName, ... , @MyTransactioNSeqNo;



  1. Jak potvrdím změny, které jsem provedl v DataTable, do tabulky, ze které jsem ji převzal?

  2. Jak převést čárkami oddělený NVARCHAR na záznamy tabulky v SQL Server 2005?

  3. Tvůrce dotazů Laravel pro rekurzivní výsledky? Např. id, parent_id

  4. 1130 Hostitel 'amazon-ec2-ip' se nemůže připojit k tomuto serveru MySQL