【问题标题】:RDL to SQL, Must declare the scalar variableRDL 到 SQL,必须声明标量变量
【发布时间】:2015-08-26 04:06:06
【问题描述】:

我正在尝试获取在 RDL 文件中找到的查询并在 SQL 中运行它。我不知道我在做什么。我尝试了通过搜索网络找到的多种解决方案,但均无济于事。我得到的错误是:“必须为“@locale”、“AuthListID”和“UserSIDs”声明标量变量。关于在哪里寻找或如何解决这个问题的任何建议?我非常喜欢 SQL n00b。提前感谢您提供任何见解。

declare @lcid as int set @lcid = dbo.fn_LShortNameToLCID(CAST (@locale AS varchar(50))
declare @AuthListLocalID as int = case when IsNumeric(@AuthListID)=1 then cast(@AuthListID as int) else (select CI_ID from fn_rbac_AuthListInfo(@lcid,@UserSIDs)  where CI_UniqueID=@AuthListID) end
declare @ci table(CI_ID int primary key, CI_UniqueID nvarchar(256), Title nvarchar(512), ArticleID nvarchar(64), BulletinID nvarchar(64), Vendor0 nvarchar(256))
insert @ci
select ui.CI_ID, ui.CI_UniqueID, ui.Title, ui.ArticleID, ui.BulletinID, ven.CategoryInstanceName
from fn_rbac_BundledConfigurationItems(@UserSIDs)  bci
join fn_rbac_UpdateInfo(@lcid, @UserSIDs) ui on ui.CI_ID=bci.BundledCI_ID
left join fn_rbac_CICategoryInfo_All(@lcid, @UserSIDs) ven on ven.CI_ID=ui.CI_ID and ven.CategoryTypeName='Company'
where bci.CI_ID=@AuthListLocalID

【问题讨论】:

    标签: sql sql-server scalar


    【解决方案1】:

    在我看来它应该看起来像这样。希望您可以访问所有被调用的函数,或者您可能需要做更多的挖掘工作。

    DECLARE 
        @lcid int
        , @AuthListLocalID int
        , @locale varchar(50)
        , @AuthListID int
        , @UserSIDs int;
    DECLARE @ci TABLE(CI_ID int primary key
                        , CI_UniqueID nvarchar(256)
                        , Title nvarchar(512)
                        , ArticleID nvarchar(64)
                        , BulletinID nvarchar(64)
                        , Vendor0 nvarchar(256));
    
    SET @lcid = dbo.fn_LShortNameToLCID(@locale)
    SET @AuthListLocalID = CASE 
                            WHEN IsNumeric(@AuthListID)=1 
                            THEN @AuthListID 
                            ELSE (SELECT 
                                    CI_ID 
                                    FROM fn_rbac_AuthListInfo(@lcid,@UserSIDs)  
                                    WHERE CI_UniqueID=@AuthListID) 
                            END
    
    INSERT INTO @ci
    VALUES (SELECT 
        ui.CI_ID
        , ui.CI_UniqueID
        , ui.Title
        , ui.ArticleID
        , ui.BulletinID
        , ven.CategoryInstanceName
    FROM fn_rbac_BundledConfigurationItems(@UserSIDs)  bci
    INNER JOIN fn_rbac_UpdateInfo(@lcid, @UserSIDs) ui 
        ON ui.CI_ID=bci.BundledCI_ID
    LEFT OUTER JOIN fn_rbac_CICategoryInfo_All(@lcid, @UserSIDs) ven 
        ON ven.CI_ID=ui.CI_ID 
        AND ven.CategoryTypeName='Company'
    WHERE bci.CI_ID=@AuthListLocalID)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多