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('')
roy_88(中国风_燃烧你的激情!!!) 这样没办法将数据插入/更新到数据表中啊
所先有一个表 CREATE TABLE tSystem_OnlyNumber(MDI int IDENTITY (1, 1) NOT NULL ,MOnlyName varchar (36) COLLATE Chinese_PRC_CI_AS NOT NULL ,MOnlyNumber varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]那么现在创建一个函数 CREATE function f_ShowOnlyNumber(@OnlyName varchar(36) ) RETURNS varchar(10) AS begin declare @str nvarchar(500) declare @Row int --返回当前影响到的行数 set @str='' select @str=MOnlyName from tSystem_OnlyNumber where MOnlyName = @OnlyName set @Row=@@rowcount if(@Row=1) begin set @str = convert(int,@str)+1 --如果相应的数据存在,就对该数据进行更新 update tSystem_OnlyNumber set MOnlyNumber= ''+@str+'' where MOnlyName= ''+@OnlyName+'' where end else begin set @str='1001' --如果相应的数据汪存在,就将该数据新增表数据表中 insert tSystem_OnlyNumber(MOnlyName,MOnlyNumber) values(''+@MOnlyName+'',''+@str+'')
end RETURN (@str) end
--那么现在创建一个存储过程 CREATE PROC f_ShowOnlyNumber ( @OnlyName varchar(36), @str varchar(500)='' output --返回@STR ,也可以通过下面的RETURN获取 ) AS declare @Row int --返回当前影响到的行数 set @str='' select @str=MOnlyName from tSystem_OnlyNumber where MOnlyName = @OnlyName set @Row=@@rowcount if(@Row=1) begin set @str = convert(int,@str)+1 --如果相应的数据存在,就对该数据进行更新 update tSystem_OnlyNumber set MOnlyNumber= @str where MOnlyName= @OnlyName end else begin set @str='1001' --如果相应的数据汪存在,就将该数据新增表数据表中 insert tSystem_OnlyNumber(MOnlyName,MOnlyNumber) values(@OnlyName,@str) end RETURN @str --返回@STR ,也可以通过OUTPUT获取
GO
--利用存储过程返回也可以 大概如下 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
自定義函數中不能執行update, insert, delete
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 TABLE tSystem_OnlyNumber(MDI int IDENTITY (1, 1) NOT NULL ,MOnlyName varchar (36) COLLATE Chinese_PRC_CI_AS NOT NULL ,MOnlyNumber varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]那么现在创建一个函数
CREATE function f_ShowOnlyNumber(@OnlyName varchar(36) )
RETURNS varchar(10)
AS
begin
declare @str nvarchar(500)
declare @Row int --返回当前影响到的行数
set @str=''
select @str=MOnlyName from tSystem_OnlyNumber where MOnlyName = @OnlyName
set @Row=@@rowcount
if(@Row=1)
begin
set @str = convert(int,@str)+1
--如果相应的数据存在,就对该数据进行更新
update tSystem_OnlyNumber set MOnlyNumber= ''+@str+'' where MOnlyName= ''+@OnlyName+'' where
end
else
begin
set @str='1001'
--如果相应的数据汪存在,就将该数据新增表数据表中
insert tSystem_OnlyNumber(MOnlyName,MOnlyNumber) values(''+@MOnlyName+'',''+@str+'')
end
RETURN (@str)
end
CREATE PROC f_ShowOnlyNumber
(
@OnlyName varchar(36),
@str varchar(500)='' output --返回@STR ,也可以通过下面的RETURN获取
)
AS declare @Row int --返回当前影响到的行数
set @str=''
select @str=MOnlyName from tSystem_OnlyNumber where MOnlyName = @OnlyName
set @Row=@@rowcount
if(@Row=1)
begin
set @str = convert(int,@str)+1
--如果相应的数据存在,就对该数据进行更新
update tSystem_OnlyNumber set MOnlyNumber= @str where MOnlyName= @OnlyName
end
else
begin
set @str='1001'
--如果相应的数据汪存在,就将该数据新增表数据表中
insert tSystem_OnlyNumber(MOnlyName,MOnlyNumber) values(@OnlyName,@str)
end
RETURN @str --返回@STR ,也可以通过OUTPUT获取
GO
大概如下
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
有没有帮知道如何解决的啊
就是利用函数更新数表及添加数据
这是不可能的