使用 SQL 服务器功能的更好方法?
Better way to use SQL Server function?
大家好,我想使用 SQL 服务器功能,
我从不在 SQL 服务器中使用函数,我只知道函数必须 return 一个值,所以我有两个存储过程 (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
对于select:
Create proc SEL_tblteststud
as
begin
select * from tbl_student_test
end
现在我想知道,如何将这些语句(Insert, Select) 转换成函数?存储过程和函数哪个更好?
您正在混合使用 过程 和 函数...
- 一个程序是为了做某事
- 函数仅供阅读
不允许在函数中放置数据更改命令。
你正在尝试的是不可能的...
更新关于函数和过程的一些见解
函数一共有三种
- 标量函数:Return 一个标量值并且性能非常差
- 多语句table值函数(
BEGIN ... END
):Return一个结果集,但表现也很差
- 内联 table 值函数:它们很棒,但有限制。将它们想象成带有预编译参数
的 VIEW
程序也有一个return值,属于INT
类型,不用于returnSP的结果,而是一种执行状态。
SP 可能只是做了一些事情而 return 根本没有任何程序结果。如果你想要 return 程序结果,你必须使用
- 输出参数
- 或者您必须在您的 SP 中调用
SELECT
。可以从外部抓取一个内部SELECT
的结果,但是这样很麻烦...
大家好,我想使用 SQL 服务器功能,
我从不在 SQL 服务器中使用函数,我只知道函数必须 return 一个值,所以我有两个存储过程 (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
对于select:
Create proc SEL_tblteststud
as
begin
select * from tbl_student_test
end
现在我想知道,如何将这些语句(Insert, Select) 转换成函数?存储过程和函数哪个更好?
您正在混合使用 过程 和 函数...
- 一个程序是为了做某事
- 函数仅供阅读
不允许在函数中放置数据更改命令。
你正在尝试的是不可能的...
更新关于函数和过程的一些见解
函数一共有三种
- 标量函数:Return 一个标量值并且性能非常差
- 多语句table值函数(
BEGIN ... END
):Return一个结果集,但表现也很差 - 内联 table 值函数:它们很棒,但有限制。将它们想象成带有预编译参数 的
VIEW
程序也有一个return值,属于INT
类型,不用于returnSP的结果,而是一种执行状态。
SP 可能只是做了一些事情而 return 根本没有任何程序结果。如果你想要 return 程序结果,你必须使用
- 输出参数
- 或者您必须在您的 SP 中调用
SELECT
。可以从外部抓取一个内部SELECT
的结果,但是这样很麻烦...