0

私はこのテーブルを持っているT-SQL関数を使ったことがありません

id   name 
 1   Juan
 2   Maria
 3   Pepita
 4   Pepon

テーブルにスペースを挿入して、このような新しい ID を生成したい

 insert into tbfornec (nome) values (' ')

この新しい ID の値を返します。

  select max(idfornec) from tbfornec

この2つのステートメントで、私はこれを書いてみました:

  create function ultimo ()
  returns int @mayor  as

  insert into tbfornec (nome) values (' ')


市長= tbfornecから max(idfornec) を選択してください。k

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ところで --ユーザー定義関数ではステートメントを使用できないと思います。addl 情報については、この投稿を参照してください。

于 2013-04-24T17:34:09.483 に答える
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 に答える
0

データベース内の何かを変更 (挿入、更新、削除、作成、削除など) する場合は、関数ではなくストアド プロシージャを使用する必要があります。

数学関数は、 1つ以上の入力を取り、何らかの出力を返す構造です。基になるデータや構造を変更しないでください。T-SQL 関数も例外ではありません。基本的には、データベース エンジンに何かを要求するのではなく、質問に対する回答を求めています。

于 2013-04-24T17:51:27.650 に答える