2015-06-10 3 views
-2

Я пытаюсь взять запрос, который я нашел в RDL-файле, и запустить его в SQL. Я не имею понятия что я делаю. Я попробовал несколько решений, которые я нашел при поиске в Интернете, но безрезультатно. Я получаю ошибки: «Должен объявить скалярную переменную» для «@locale», «AuthListID» и «UserSID». Любые предложения о том, где искать или как я могу это исправить? Я очень SQL n00b. Заранее благодарю вас за любое понимание.RDL to SQL, Должен объявить скалярную переменную

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 [email protected]) 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 [email protected] 

ответ

0

Мне кажется, что это должно выглядеть примерно так. Надеюсь, у вас есть доступ ко всем вызываемым функциям, или вам может понадобиться больше копать.

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 [email protected]) 
         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 [email protected]) 
Смежные вопросы