Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос новичка по поводу процедуры и функции  [new]
Ян Шева с Сахалина
Member

Откуда:
Сообщений: 4
Для базы данных workers создана процедура.

USE workers
GO
CREATE PROCEDURE insertworker
@Name nchar(32),
@Age decimal(3, 0),
@Profession nchar(32)
AS
BEGIN
INSERT INTO dbo.sys (Name,Age,Profession) values (@Name, @Age, @Profession)
RETURN 0
END
GO


Вопросы:
1. Для чего нужна инструкция USE ?
2. Что означает первый GO и последний GO?
3. После выполнения INSERT INTO dbo.sys (Name,Age,Profession) values (@Name, @Age, @Profession)
вернет ли процедура 0 или нет?
4. И самое главное, можно ли написать для базы данных workers функцию, которая будет вызывать процедуру insertworker
и потом возвращать 0. Если такое можно сделать, напишите пожалуйста код создания такой функции.
17 янв 15, 17:36    [17132403]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
1. Это написано в хелпе.
2. И это написано в хелпе.
3. Да.
4. Процедуры вызываются командой execute. Которая тоже в хелпе описана.
17 янв 15, 18:29    [17132520]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
Ян Шева с Сахалина
Member

Откуда:
Сообщений: 4
Не получается вызвать из функции процедуру. Ошибка:
Внутри функции можно вызывать только функции.....

Это никак не обойти?
17 янв 15, 19:56    [17132654]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
Ян Шева с Сахалина
Member

Откуда:
Сообщений: 4
USE { [database] }
Database
Имя базы данных, на которую переключается контекст пользователя. Имена баз данных должны соответствовать правилам для идентификаторов.

Что такое "контекст пользователя"?
Что такое "правилам для идентификаторов"?
17 янв 15, 19:58    [17132657]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ян Шева с Сахалина
Что такое "контекст пользователя"?
Что такое "правилам для идентификаторов"?

Это написано в хелпе

Ян Шева с Сахалина
Это никак не обойти?

Вы считаете, что привила пишут для того, чтобы можно было их обойти ?
17 янв 15, 20:04    [17132663]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
Ян Шева с Сахалина
Member

Откуда:
Сообщений: 4
А почему такое правило, можете объяснить?
18 янв 15, 02:28    [17133511]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Ян Шева с Сахалина
А почему такое правило, можете объяснить?
Такое правило потому, что так захотелось разработчикам MSSQL.
18 янв 15, 03:10    [17133517]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Ян Шева с Сахалина
А почему такое правило, можете объяснить?
Чтобы в функции нельзя было сделать то, что разрешено делать только в процедурах. Иначе можно было бы обойти ограничения, либо пришлось бы при создании функции проверять все вызываемые из неё процедуры, и далее по цепочке.
18 янв 15, 10:54    [17133642]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
_djХомяГ
Guest
А зачем ф-ция - почему не процедура которая будет вызывать другую процедуру insertworker и возвращать значение 0 /не 0
Ну и затем анализировать это значение в процедуре

declare @retval tinyint 
exec  @retval=insertworker 'Вася',99,'директор'
if @retval <>0
begin
------логика 
end 
19 янв 15, 10:39    [17136071]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
_djХомяГ
А зачем ф-ция - почему не процедура
Потому что при изучении паскаля говорили про функции. И в "С" тоже функции.
19 янв 15, 10:45    [17136112]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос новичка по поводу процедуры и функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
alexeyvg
_djХомяГ
А зачем ф-ция - почему не процедура
Потому что при изучении паскаля говорили про функции. И в "С" тоже функции.
В Паскале процедуры тоже пользуются спросом.
Правда, это такие же функции, просто не возвращающие результат.
19 янв 15, 10:49    [17136147]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить