日期:2014-05-18  浏览次数:20545 次

自定义函数中应用Insert,update
如我有一个表(table1)字段名为ID,Number

我们都知道函数中的insetp,update这些只能针对局部的。
如何利用函数对数据库进行更新,和添加操作


------解决方案--------------------
自定義函數中不能執行update, insert, delete
------解决方案--------------------
如何利用函数对数据库进行更新,和添加操作

--
應該不行, 改用存儲過程
------解决方案--------------------
marco08(天道酬勤) ( ) 信誉:100 Blog 2007-2-12 9:27:25 得分: 0



自定義函數中不能執行update, insert, delete




------解决方案--------------------
create function test(@a int= ' ')
returns @ta table(工号 varchar(3), 打卡日期 varchar(10), 打卡时间 varchar(8))
as
begin
insert @ta
select '001 ', '2006.09.08 ', '07:40:09 ' union all
select '001 ', '2006.09.08 ', '08:09:00 ' union all
select '002 ', '2006.09.08 ', '08:09:00 ' union all
select '001 ', '2006.09.09 ', '08:09:09 '
return
end
--这样用
select * from test( ' ')



------解决方案--------------------
--利用存储过程返回也可以
大概如下
CREATE PROCEDURE pSys_GetOnlyNumber
@MOnlyName varchar(36), --唯一值的名称
@MOnlyNumber varchar(20) output--添加时默认值
AS
declare @str nvarchar(500)
declare @Row int --返回当前影响到的行数
set @str= ' '
select @str=MOnlyNumber from tSystem_OnlyNumber where MOnlyName = @MOnlyName
set @Row=@@rowcount
if(@Row> 0)--如果数据存在,就获取加1
begin
set @str = convert(int,@str)+1
update tSystem_OnlyNumber set MOnlyNumber= @str where MOnlyName = @MOnlyName
end
else--否则就直接创建 
begin
set @str= '1001 '
insert tSystem_OnlyNumber(MOnlyName,MOnlyNumber) values(@MOnlyName,@str)
end
set @MOnlyNumber=@str
select @str as OnlyNumber
GO

------解决方案--------------------
okson(okson) ( ) 信誉:100 Blog 2007-2-13 17:05:41 得分: 0



有没有帮知道如何解决的啊
就是利用函数更新数表及添加数据





这是不可能的