Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Must declare the scalar variable  [new]
Dan Khatskevich
Member

Откуда:
Сообщений: 324
Коллеги, почему, когда я делаю так, то мне в ответ прилетает ошибка
Msg 137, Level 15, State 2, Procedure Get_num, Line 55
Must declare the scalar variable "@DB_IMPORT_INTRANET".

а если сделать просто select * from @DB_IMPORT_INTRANET,

то все нормально?

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE Get_num

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare
@DB_IMPORT_INTRANET TABLE (
[Full_Name] [text] NULL,
[First_Name] [text] NULL,
[Last_Name] [text] NULL,
[eMail] [text] NULL,
[ManagerName] [text] NULL,
[MobilePhone] [text] NULL,
[MobileAccount] [text] NULL,
[OfficePhone] [text] NULL,
[position] [text] NULL,
[Devision] [text] NULL,
[Department] [text] NULL,
[DeptCode] [text] NULL,
[DeptCodeMgr] [text] NULL,
[emp_status] [text] NULL,
[touch_card] [text] NULL,
[CorpKey] [char](20) NULL,
[USERID] [char](50) NULL
)
Insert into @DB_IMPORT_INTRANET
Select
([Full_Name]) ,
[First_Name],
[Last_Name],
[eMail],
[ManagerName],
[MobilePhone],
[MobileAccount],
[OfficePhone],
[position],
[Devision],
[Department],
[DeptCode],
[DeptCodeMgr],
[emp_status],
[touch_card],
([CorpKey]) ,
[USERID]
from ACLVERIF.dbo.DB_IMPORT_INTRANET;

select dbo.CallsDetails.CallID, dbo.CallsDetails.CallDate,
@DB_IMPORT_INTRANET.CorpKey,dbo.HTMLBills.account,
dbo.CallsDetails.[Sum],dbo.CallsDetails.[Time]
,dbo.CallsDetails.Number, dbo.CallsDetails.NumberING,
dbo.CallsDetails.Service
,@DB_IMPORT_INTRANET.Full_Name
,dbo.CallsDetails.INOUT,
dbo.BusnessNumbers.Type
from
dbo.HTMLBills
join
dbo.CallsDetails
on dbo.HTMLBills.MobilePhone=dbo.CallsDetails.NumberING collate Cyrillic_General_CI_AS
join @DB_IMPORT_INTRANET
on CAST(@DB_IMPORT_INTRANET.MobileAccount as char(30))=dbo.HTMLBills.account
join dbo.BusnessNumbers
on
RIGHT(RTRIM(dbo.BusnessNumbers.BusnessNumber), 7) = RIGHT(RTRIM(dbo.CallsDetails.Number), 7)

where
(CAST(REPLACE(dbo.CallsDetails.[Sum], ',', '.') AS float)<>0
and
@DB_IMPORT_INTRANET.CorpKey = 'xxx')
or
(@DB_IMPORT_INTRANET.USERID = 'xxx'
and
(CAST(REPLACE(dbo.CallsDetails.[Sum], ',', '.') AS float)<>0))
END
GO
9 сен 09, 15:21    [7637612]     Ответить | Цитировать Сообщить модератору
 Re: Must declare the scalar variable  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
join @DB_IMPORT_INTRANET [b]x[/b]
on CAST([b]x.[/b]MobileAccount as char(30))=dbo.HTMLBills.account
используйте алиасы
-------------------------------------
Jedem Das Seine
9 сен 09, 15:24    [7637625]     Ответить | Цитировать Сообщить модератору
 Re: Must declare the scalar variable  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
@DB_IMPORT_INTRANET.CorpKey
Так писать нельзя. Надо через алиас табличной переменной @DB_IMPORT_INTRANET.
SELECT I.CorpKey FROM @DB_IMPORT_INTRANET I;
9 сен 09, 15:29    [7637655]     Ответить | Цитировать Сообщить модератору
 Re: Must declare the scalar variable  [new]
Dan Khatskevich
Member

Откуда:
Сообщений: 324
Спасибо всем за разъяснения. Поправил и все пошло.
9 сен 09, 15:32    [7637679]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить