sql >> Database >  >> RDS >> Sqlserver

'Dynamische' opgeslagen procedure

Ik moet hier de gegevenstypen raden, en ik laat je de extra pluisjes invullen.

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. Meerdere manieren om duplicaten uit SQL-tabellen te verwijderen

  2. SQL 2008 Dialect-ondersteuning voor NHibernate

  3. Mysql start niet - ibdata1 corrupt? - foutnummer 13 van het besturingssysteem - probleem met machtigingen

  4. MySQL - Probleem met dynamische draaitabelgroepering