Лучший способ использовать функцию 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 со стороны, но это очень громоздко...
Другие вопросы по тегам