0

我从来没有使用过 T-SQL 函数 我有这张表

id   name 
 1   Juan
 2   Maria
 3   Pepita
 4   Pepon

我想在表中插入空间以生成 ea 新 ID,类似这样

 insert into tbfornec (nome) values (' ')

并返回这个新 ID 的值:

  select max(idfornec) from tbfornec

有了这两个陈述,我试着写这个:

  create function ultimo ()
  returns int @mayor  as

  insert into tbfornec (nome) values (' ')

市长=从 tbfornec 中选择 max(idfornec)
我做错了什么???ķ

4

3 回答 3

2

我将创建一个过程并用于scope_identity()返回最后插入的 id:

create procedure ultimo (@name varchar(100)) 
as 
begin
  insert into tbfornec values (@name)
  select scope_identity()
end

然后调用它:

exec ultimo ' ';

SQL 小提琴演示

顺便说一句——我认为您不能INSERT在用户定义的函数中使用语句。有关附加信息,请参阅此帖子

于 2013-04-24T17:34:09.483 回答
0

如果您正在修改(插入、更新、删除、创建、删除等)数据库中的任何内容,那么您应该使用存储过程而不是函数。

数学函数是一种结构,它接受一个或多个输入并返回一些输出。它不应该修改任何底层数据或结构。T-SQL 函数也不例外。它本质上是向数据库引擎询问问题的答案,而不是要求它做某事。

于 2013-04-24T17:51:27.650 回答
0

这是我的解决方案,正在工作

create procedure ultimo (@name varchar(10)) 
as 
begin
insert into tbfornec (nome) values (@name)
select scope_identity()
end

ultimo ''

我不知道功能不会插入,删除,更新非常感谢你们:)

于 2013-04-24T17:59:02.883 回答