Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/124: Рейтинг темы: голосов - 124, средняя оценка - 4.97
5 / 5 / 1
Регистрация: 02.11.2011
Сообщений: 116

Необходимо объявить скалярную переменную!

22.06.2012, 22:47. Показов 25545. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста с проблемой, уже битый час не могу разобраться.

Фото приложено.
Миниатюры
Необходимо объявить скалярную переменную!  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2012, 22:47
Ответы с готовыми решениями:

ASP NET ошибка Необходимо объявить скалярную переменную
Здравствуйте! У меня возникла такая проблема: Пишу обработчик для кнопки: Dim connect As New...

При попытке сохранения данных ошибка: Необходимо объявить скалярную переменную
Разбираюсь слабо. Тут идет сохранение изменений из dataGridView в бд slq. Ошибка на строке: int recordsAffected = cmd.ExecuteNonQuery(); ...

Необходимо объявить скалярную переменную "@IPN"
Здравствуйте! У меня возникла такая проблема: Пишу обработчик для кнопки: Dim connect As New...

11
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
22.06.2012, 23:00
Странно, что между аргументами процедуры нет запятых.
Странно, что аргументы процедуры указаны в скобках.
1
5 / 5 / 1
Регистрация: 02.11.2011
Сообщений: 116
22.06.2012, 23:31  [ТС]
Цитата Сообщение от ksk Посмотреть сообщение
Странно, что между аргументами процедуры нет запятых.
Странно, что аргументы процедуры указаны в скобках.
Хэхэ и то правда)))
0
2 / 1 / 1
Регистрация: 21.01.2020
Сообщений: 78
27.07.2020, 16:27
Добрый день, у меня похожая проблема. Я впервые использую таблицы, как переменные. Сделал 3 типа всё нормально, съел.
При попытке запихнуть в процедуру просит объявить переменные. Я в ступоре, что делать?
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
USE TestBase
GO
 
CREATE PROCEDURE InsertIntoVendor 
    @userData InsertVendor READONLY,
    @product dbo.InsertProduct READONLY,
    @offer InsertOffer READONLY
AS
BEGIN
    INSERT INTO dbo.Product
    (
        [Price],
        [Url],
        [Picture],
        [Description],
        [CurID],
        [CatID]
    )
    VALUES
    (
        @product.[Price],
        @product.[Url],
        @product.[Picture],
        @product.[Description],
        @product.[CurID],
        @product.[CatID]
    )
 
    INSERT INTO dbo.Offer
    (
        [ID],
        [Bid],
        [Cbid],
        [Available]
    )
    VALUES
    (
        @offer.[ID],
        @offer.[Bid],
        @offer.[Cbid],
        @offer.[Available]
    )
 
    INSERT INTO dbo.VendorModel 
    (
        [ProductID],
        [Delivery],
        [ManufacturerWarranty],
        [LocalDeliveryCost],
        [TypePrefix],
        [Vendor],
        [VendorCode],
        [Model],
        [CountryOrigin],
        [OfferID]
    )
    VALUES
    (
        @userData.ProductID,
        @userData.Delivery,
        @userData.ManufacturerWarranty,
        @userData.LocalDeliveryCost,
        @userData.TypePrefix,
        @userData.Vendor,
        @userData.VendorCode,
        @userData.Model,
        @userData.CountryOrigin,
        @userData.OfferID
    )
END
GO
Ошибки:
сообщение: 137, уровень: 16, состояние: 1, процедура: InsertIntoVendor, строка: 19 [строка начала пакета: 2]
Необходимо объявить скалярную переменную "@product".
сообщение: 137, уровень: 16, состояние: 1, процедура: InsertIntoVendor, строка: 36 [строка начала пакета: 2]
Необходимо объявить скалярную переменную "@offer".
сообщение: 137, уровень: 16, состояние: 1, процедура: InsertIntoVendor, строка: 57 [строка начала пакета: 2]
Необходимо объявить скалярную переменную "@userData".
(Каждое сообщение дублируется несколько раз)

Если также будут советы по написанию кода, пишите)
0
5949 / 4525 / 1094
Регистрация: 29.08.2013
Сообщений: 28,105
Записей в блоге: 3
27.07.2020, 16:55
Цитата Сообщение от furrycat Посмотреть сообщение
Если также будут советы по написанию кода, пишите)
что такое @product
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
27.07.2020, 17:01
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   INSERT INTO dbo.Product
    (
        [Price],
        [Url],
        [Picture],
        [Description],
        [CurID],
        [CatID]
    )
    select
        [Price],
        [Url],
        [Picture],
        [Description],
        [CurID],
        [CatID]
    from
     @product
0
2 / 1 / 1
Регистрация: 21.01.2020
Сообщений: 78
27.07.2020, 17:41
qwertehok переменная типа табличных данных
Если это намёк, что параметры функций надо заключать в скобки, то это не помогает, те же ошибка выпадают
0
5949 / 4525 / 1094
Регистрация: 29.08.2013
Сообщений: 28,105
Записей в блоге: 3
27.07.2020, 18:28
это намек что переменная табличного типа должна быть объявлена сначала
0
2 / 1 / 1
Регистрация: 21.01.2020
Сообщений: 78
27.07.2020, 19:14
qwertehok, если это параметр процедуры, как его нужно объявлять?
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
28.07.2020, 09:16
Главное - не читать ни ответов, ни документацию, а упорно гнуть свою линию - если "переменная", то работать как со скаляром и пофиг что это переменная табличная.
Очень продуктивный и грамотный подход...
0
2 / 1 / 1
Регистрация: 21.01.2020
Сообщений: 78
28.07.2020, 10:24
invm, спасибо за понимание. Да, я впервые занялся этим вопросом, НЕУЖЕЛИ ТАК СЛОЖНО СКАЗАТЬ, ЧТО Я НЕ ПРОЧИТАЛ (упустил из виду)? (надо сказать: прочитай документацию)

Я прочитал ответы, но не понял почему одна запись работает, а другая нет! А на счёт документации: есть куча сайтов, каждый из которых или что-то придумывает, или что-то упускает, или моих знаний не достаточно чтобы понять, что так написано. Я до того, как обратиться сюда прочитал microsoft, и множество других сайтов и форумов, чтобы в итоге получить нужный мне вариант и столкнуться с тем, что он не работает!

Пожалуй следует уточнить:
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   INSERT INTO dbo.Product
    (
        [Price],
        [Url],
        [Picture],
        [Description],
        [CurID],
        [CatID]
    )
    SELECT
        [Price],
        [Url],
        [Picture],
        [Description],
        [CurID],
        [CatID]
    FROM
     @product

но, если попытаться использовать 2 таблицы (допустим добавить @offer, почему-то всё летит к чёртикам.

Можно по человечески реагировать на незнание людей???? Или по человечески просто дать ответ как решённую задачу без объяснения что и зачем так стоит?

Добавлено через 15 минут
Если я всё правильно понял (в чём я не уверен), надо писать так:
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ALTER PROCEDURE [dbo].[InsertIntoVendor] 
    @userData InsertVendor READONLY,
    @product dbo.InsertProduct READONLY,
    @offer InsertOffer READONLY
AS
BEGIN
 
    DECLARE @userData TABLE
    (
        [ID] [INT] IDENTITY(1,1) NOT NULL,
        [ProductID] [INT] NULL,
        [Delivery] [bit] NULL,
        [ManufacturerWarranty] [bit] NULL,
        [LocalDeliveryCost] [INT] NULL,
        [TypePrefix] [VARCHAR](10) NULL,
        [Vendor] [VARCHAR](5) NULL,
        [VendorCode] [VARCHAR](10) NULL,
        [Model] [VARCHAR](30) NULL,
        [CountryOrigin] [VARCHAR](15) NULL,
        [OfferID] [INT] NULL
    )/* и тд */

Но возникает вопрос, зачем их повторно объявлять, если они уже были объявлены как параметры функции.
Также компилятор жалуется, что эта переменная уже объявлена.

В общем, я ничего не понимаю!
0
-3 / 3 / 0
Регистрация: 17.03.2015
Сообщений: 86
15.02.2021, 09:31
И у меня такие же проблемы )
С таким кодом
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
 
--МАССОВАЯ ВСТАВКА НЕСКОЛЬКИХ ФАЙЛОВ_CSV ИЗ ПАПКИ 
--Пока что ругается на курсор
 
  
    IF (OBJECT_ID('tempdb..#csv_temp') IS NOT NULL) DROP TABLE #csv_temp;
    
    CREATE TABLE #csv_temp(
            [Times] VARCHAR (100),
            [Caller_Name] INT,
            [Caller_Number] INT,
            [Callee_Name] INT,
            [Callee_Numbers] VARCHAR(100),
            [DOD] VARCHAR(100),
            [DID] VARCHAR(100),
            [Call_Duration_(s)] INT,
            [Talk_Duration_(s)] INT,
            [STATUS] VARCHAR(100),
            [Source_Trunk] VARCHAR(50),
            [Destination_Trunk] VARCHAR(100),
            [Communication_Type] VARCHAR(100),
            [PIN_Code] VARCHAR(10),
            [Caller_IP_Address] VARCHAR(200),
            [Cost] VARCHAR(100),
            [Billing_Account] VARCHAR(100)
            ) 
 
    -- Переменые 
    DECLARE @filename VARCHAR(255),
            @path     VARCHAR(255),
            @SQL      VARCHAR(8000),
            @cmd      VARCHAR(1000),
            @Times   VARCHAR(1000), 
            @Caller_Name  INT,
            @Caller_Number INT,
            @Callee_Name INT,
            @Callee_Numbers VARCHAR(100),
            @DOD VARCHAR(100),
            @DID VARCHAR(100),
            @Call_Duration_(s)INT,
            @Talk_Duration_(s) INT,
            @STATUS VARCHAR(100),
            @Source_Trunk VARCHAR(50),
            @Destination_Trunk VARCHAR(100),
            @Communication_Type VARCHAR(100),
            @PIN_Code VARCHAR(10),
            @Caller_IP_Address VARCHAR(200),
            @Cost VARCHAR(100),
            @Billing_Account VARCHAR(100)
    --получить список файлов для обработки:
    SET @path = 'C:\serg\'
    SET @cmd = 'dir ' + @path + '*.csv /b'
    
    INSERT INTO #csv_temp
    (       [Times] ,
            [Caller_Name],
            [Caller_Number],
            [Callee_Name],
            [Callee_Numbers] ,
            [DOD],
            [DID],
            [Call_Duration_(s)],
            [Talk_Duration_(s)],
            [Status],
            [Source_Trunk],
            [Destination_Trunk],
            [Communication_Type],
            [PIN_Code],
            [Caller_IP_Address],
            [Cost],
            [Billing_Account]
        )
    --SELECT '17'
    VALUES (
    (SELECT [Times] FROM #csv_temp ),
    (SELECT [Caller_Name] FROM #csv_temp ),
    (SELECT [Caller_Number] FROM #csv_temp ),
    (SELECT [Callee_Name] FROM #csv_temp ),
    (SELECT [Callee_Numbers] FROM #csv_temp ),
    (SELECT [DOD] FROM #csv_temp ),
    (SELECT [DID] FROM #csv_temp ),
    (SELECT [Call_Duration_(s)] FROM #csv_temp ),
    (SELECT [Talk_Duration_(s)] FROM #csv_temp ),
    (SELECT [Status] FROM #csv_temp ),
    (SELECT [Source_Trunk] FROM #csv_temp ),
    (SELECT [Destination_Trunk] FROM #csv_temp ),
    (SELECT [Communication_Type] FROM #csv_temp ),
    (SELECT [PIN_Code] FROM #csv_temp ),
    (SELECT [Caller_IP_Address] FROM #csv_temp ),
    (SELECT [Cost] FROM #csv_temp ),
    (SELECT [Billing_Account] FROM #csv_temp )
     )
    
    EXEC Master..xp_cmdShell @cmd
    UPDATE #csv_temp SET [Times] = @path where [Times] is null
 
 
    -- Курсор
    declare c1 cursor for SELECT 
            [Times],
            [Caller_Name],
            [Caller_Number],
            [Callee_Name],
            [Callee_Numbers] ,
            [DOD],
            [DID],
            [Call_Duration_(s)],
            [Talk_Duration_(s)],
            [Status],
            [Source_Trunk],
            [Destination_Trunk],
            [Communication_Type],
            [PIN_Code],
            [Caller_IP_Address],
            [Cost],
            [Billing_Account]
 
 FROM #csv_temp where Times like '%.csv%'
 
--Открываем Курсор
    open c1
--- выборка данных
    ---fetch next from c1 into @path,@filename
 fetch next from c1 into @Times,@Caller_Name,@Caller_Number,
@Callee_Name,@Callee_Numbers,@DOD,@DID,@Call_Duration_(s),
@Talk_Duration_(s),@Status,@Source_Trunk,@Destination_Trunk,
@Communication_Type,@PIN_Code,@Caller_IP_Address,@Cost,@Billing_Account
 
 
    While @@fetch_status <> -1
      begin
      --bulk insert won't take a variable name, so make a SQL AND EXECUTE it instead:
       SET @SQL = 'BULK INSERT #csv_temp FROM ''' + @path + @filename + ''' '
           + '     WITH ( 
                   FIELDTERMINATOR = '';'', 
                   ROWTERMINATOR = ''0x0a'', 
                   FIRSTROW = 2 
                ) '
   -- Вывод результата
   print @SQL
    EXEC (@SQL)
 
   --   fetch NEXT FROM c1 INTO @path,@filename
      END
    close c1
    deallocate c1
--------------------------------------------------------------------------------------
Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис около конструкции "на".
Сообщение 102, уровень 15, состояние 1, строка 41
Неправильный синтаксис около конструкции "(".
Сообщение 137, уровень 15, состояние 1, строка 52
Необходимо объявить скалярную переменную "@path".
Сообщение 137, уровень 15, состояние 2, строка 53
Необходимо объявить скалярную переменную "@path".
Сообщение 137, уровень 15, состояние 2, строка 95
Необходимо объявить скалярную переменную "@cmd".
Сообщение 137, уровень 15, состояние 2, строка 96
Необходимо объявить скалярную переменную "@path".
Сообщение 137, уровень 15, состояние 2, строка 125
Необходимо объявить скалярную переменную "@Times".
Сообщение 137, уровень 15, состояние 2, строка 134
Необходимо объявить скалярную переменную "@path".
Сообщение 137, уровень 15, состояние 2, строка 141
Необходимо объявить скалярную переменную "@SQL".
Сообщение 137, уровень 15, состояние 2, строка 142
Необходимо объявить скалярную переменную "@SQL".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2021, 09:31
Помогаю со студенческими работами здесь

ERROR Необходимо объявить скалярную переменную "ID"
public void Update_Tariff(int ID, string login, string password) { string connStr = @&quot;Data...

Ссылки на скалярную переменную, хэш или массив
Задание вот такое: В текстовом файле находятся записи о книгах в библиотеке. В каждой строке записана информация об одной книге: ФИО...

Объявить переменную.
Объясните пожалуйста, что за правило такое назначения имен переменным: var dwCount: DWORD; pMyPointer: Pointer; fFound:...

объявить переменную
Здравствуйте. У меня такой вопрос, как лучше объявить переменную для считывания из базы MySQL столбца с типом timestamp.

Объявить переменную
Добрый день! Помогите пожалуйста с такой ситуацией: $bidid = ?????????;//не знаю что вставить для объявления переменной ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru