Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Blue_Jeans
0 / 0 / 4
Регистрация: 25.05.2014
Сообщений: 115
1

При вызове процедуры результат не выводится через PRINT

28.10.2017, 16:55. Просмотров 564. Ответов 4

Здравствуйте! Мне нужно написать процедуру, генерирующую значение ID , входным параметром которой является название таблицы. Подобный запрос для одной таблички выводит все, как нужно:
SQL
1
2
3
4
5
USE BooksShop
GO
DECLARE  @newId INT;
SELECT @newId=MAX(ID)+1 FROM Book;
PRINT 'Сгенерированный идентификатор: ' + CAST(@newId AS VARCHAR);
А процедура ничего де выводит, кроме "Выполнение команд успешно завершено.":
SQL
1
2
3
4
5
6
7
8
9
USE BooksShop;
GO
CREATE PROCEDURE CreateID(@tableName NCHAR(50), @newId INT OUTPUT)
    AS 
     EXEC('SELECT @newId=MAX(ID)+1 FROM '+@TableName);
       
DECLARE @createdID INT;
EXECUTE CreateID @tableName='Book', @newId=@createdID OUTPUT;
PRINT 'Сгенерированный идентификатор: ' + CAST(@createdID AS VARCHAR);
Подскажите,пожалуйста, в чем ошибка?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2017, 16:55
Ответы с готовыми решениями:

Unspecified Error при вызове процедуры Oracle через OleDb
Выполняю вызов процедуры Oracle с помощью следующего кода: try { this.OpenConnection(); ...

Реализовать два счётчика, при нажатии на 'Print' выводится сообщение со статистикой
Необходимо создать страницу, на которой будет располагаться три кнопки. Первая кнопка будет '1'....

Почему в main(); При вызове объекта не выводится в консоль?
Задача: Цифровой счетчик, это переменная с ограниченным диапазоном. Значение которой сбрасывается,...

Ошибки при вызове процедуры
Вот сама функция function GCD(A: Integer; B: Integer): Integer; begin A := Abs(A); B...

Сбой при удаленном вызове процедуры
Буквально пару часов назад перестали запускаться все стандартные приложения...

4
iap
942 / 656 / 142
Регистрация: 27.11.2009
Сообщений: 1,973
28.10.2017, 17:52 2
Переменная @newId в динамическом запросе и параметр процедуры @newId - это разные переменные.
Можно, конечно, с помощью OUTPUT-параметра процедуры sp_executesql присвоить нужное значение параметру...
Но зачем весь этот сыр-бор? Одно только определение ID по MAX(ID)+1 делает всю идею совершенно бесполезной.
Вы один работаете на сервере?

Добавлено через 7 минут
Может, я чего-то не понимаю, но зачем какой-то необъявленной переменной @newId присваивается некое значение в EXEC()?
А в процедуру CreateID всегда передаётся неинициализированная переменная @createdID = NULL?
0
Blue_Jeans
0 / 0 / 4
Регистрация: 25.05.2014
Сообщений: 115
28.10.2017, 18:13  [ТС] 3
Насчет переменной @createdID я сама не разобралась, делала по примеру с https://professorweb.ru/my/sql-server/2012/level3/3_2.php.
0
qwertehok
2741 / 2422 / 642
Регистрация: 29.08.2013
Сообщений: 16,319
28.10.2017, 22:30 4
обычно если надо что-то вернуть пишут функцию
0
safon64r
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 20
Завершенные тесты: 1
31.10.2017, 10:19 5
Лень искать, но думаю поймете, самый оптимальный вариант решения, как сказал iap, output.
T-SQL
1
2
3
4
5
6
7
8
create procedure lnexp
@x int, @y float output
as
set @y=POWER(2,@x)*EXP(LOG(POWER(@x,2)))
/*-----*/
declare @ln float
exec lnexp 2, @y=@ln output
print @ln
Где @y выходной параметр, а уже при вызове функции обращаетесь к нему.
0
31.10.2017, 10:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2017, 10:19

Сбой при удаленном вызове процедуры
Здравствуйте! На ноутбуке установлена Windows 8.1 SL. Нажимаю "пуск", пишу в строке поиска...

Ошибка при вызове хранимой процедуры
Создал хранимую процедуру: CREATE DEFINER=`root`@`localhost` PROCEDURE `QueryAuthentification`(IN...

Ошибка при вызове хранимой процедуры
Добрый день, подскажите что делать? Может кто сталкивался с данной проблемой. При вызове хранимой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru