更好的方法使用SQL Server功能?

时间:2017-06-14 08:04:18

标签: sql-server function stored-procedures sql-function

嘿伙计们我想使用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 个答案:

答案 0 :(得分:0)

您正在混合过程功能 ...

  • 程序适用于执行某事
  • 功能适用于只读

不允许在函数中放置数据更改命令。

你正在尝试的是不可能......

更新有关功能和程序的一些见解

有三种类型的功能

  • 标量函数:返回一个标量值且表现非常糟糕
  • 多语句表值函数(带BEGIN ... END):返回结果集,但表现不佳
  • 内联表值函数:它们很棒但受限制。可以将它们想象为具有预编译参数的VIEW

一个过程也有一个返回值,它是tpye INT并且不用于返回SP的结果,而是用于返回执行状态。

SP可能只是做某事而根本不返回任何程序结果。如果要返回程序结果,则必须使用

  • 输出参数
  • 或者您必须在SP中拨打SELECT。可以从外部获取内部SELECT的结果,但这非常麻烦......