Лучший способ использовать функцию SQL Server?
Эй, ребята, я хочу использовать функцию SQL Server,
Я никогда не использую функцию в SQL Server и знаю только, что функция должна возвращать значение, поэтому у меня есть две хранимые процедуры (1 for insert and 1 for select)
Мои хранимые процедуры выглядят так
Для вставки:
create proc INS_tblteststud
@stdtid int=null,
@name varchar(50) =null,
@fullname varchar(50)=null,
@address varchar(50)=null,
@city varchar(50)=null,
@country varchar(50)=null,
@contno varchar(50)=null
as
begin
insert into tbl_student_test(name,fullname,address,city,country,contno)
values
(@name,@fullname,@address,@city,@country,@contno)
end
И для выбора:
Create proc SEL_tblteststud
as
begin
select * from tbl_student_test
end
Теперь я хочу знать, как я могу преобразовать эти операторы (Insert, Select) в функции? И какую лучше использовать хранимую процедуру или функцию?
1 ответ
Вы смешиваете процедуру и функцию...
- Процедура предназначена для выполнения чего-либо
- Функция предназначена только для чтения
Не разрешается размещать команды изменения данных внутри функции.
То, что вы пытаетесь, просто невозможно...
ОБНОВЛЕНИЕ Некоторое понимание о функциях и процедурах
Есть три типа функций
- скалярные функции: возвращают одно скалярное значение и очень плохо работают
- многозначные табличные функции (с
BEGIN ... END
): Вернуть набор результатов, но он также плохо работает - встроенные табличные функции: они великолепны, но ограничены. Думайте о них как о
VIEW
с предварительно скомпилированными параметрами
Процедура также имеет возвращаемое значение, которое имеет tpye INT
и не используется, чтобы возвратить результат SP, но вид статуса выполнения.
SP может просто что-то делать и вообще не возвращать результата процедуры. Если вы хотите вернуть процессуальные результаты, вы должны либо использовать
- выходные параметры
- или вы должны позвонить
SELECT
в пределах вашего SP. Можно получить результат внутреннегоSELECT
со стороны, но это очень громоздко...