sql >> データベース >  >> RDS >> Sqlserver

SQL Server ストアド プロシージャを実行できません

    動的 T-SQL を使用する必要はありません この場合の発言。方法の 1 つは、次のようなものを使用することです:

    DECLARE @TempXML XML = CONVERT(XML, '<t>' + REPLACE(@CategoriesIdString, ',', '</t><t>') + '</t>')
    
    ;WITH DataSource ([CategoryId]) AS
    (
        SELECT T.c.value('.', 'VARCHAR(100)')
        FROM @TempXML.nodes('/t') AS T(c)
        WHERE LEN(T.c.value('.', 'VARCHAR(100)')) > 0
    )
    SELECT Item.Id
          ,Item.ModelId
          ,Item.ItemCode
          ,Item.CategoryId
          ,(SELECT TOP (1) Category.CategoryName FROM Category WHERE Category.Id = Item.CategoryId) AS CategoryName
    FROM Item 
    LEFT OUTER JOIN Category 
        ON Item.CategoryId = Category.Id
    LEFT JOIN DataSource
        ON Item.CategoryId = DataSource.CategoryId
    WHERE DataSource.CategoryId IS NOT NULL 
        OR @CategoriesIdString IS NULL
    

    アイデアは @CategoriesIdString でフィルタリングすることです NOT NULL の場合のパラメータ LEFT JOIN の使用 .




    1. MySQLvarchar変数の宣言と使用

    2. すべてのSQLテーブルをループする方法は?

    3. SQLServer 2005 関数での動的 SQL の実行

    4. SQLサーバーからパスワードを復号化する方法は?