首页 新闻 会员 周边 捐助

T-sql 创建function 里面执行 update语句 遇到的问题

0
悬赏园豆:10 [已解决问题] 解决于 2011-01-21 21:14

我有两张表,一张是:Prod_Device,另一张是:Prod_DevicePhase两张表是有关联的。

我想根据 Prod_Device 表的 FNumber 字段 和 Prod_DevicePhase表的 FPhaseName字段的条件而清空体 Prod_DevicePhase表的FFinisherID , FFinishDate字段,所以定义了一个 function

在检查的时候,没有语法错误,可是在运行的时候,就提示:

“消息 443,级别 16,状态 2,过程 SetAssureBack,第 5 行
在函数内不正确地使用了 'UPDATE'。”,求高人指教.

create function SetAssureBack (@FNumber varchar(50),@FPhaseName varchar(50))
returns int
as
begin
   update Prod_DevicePhase set FFinisherID=null,FFinishDate=null where FDeviceID = (select  FID from Prod_Device where FNumber=@FNumber)
  and  FPhaseName=@FPhaseName;
 return 1;
end
go

空头支票的主页 空头支票 | 初学一级 | 园豆:50
提问于:2011-01-17 18:28
< >
分享
最佳答案
0

FDeviceID IN (select FID....

收获园豆:10
Firen | 大侠五级 |园豆:5385 | 2011-01-17 21:28
这样也不对的,会报一样的错误,可是这个function改成procedure类型的就行了的
空头支票 | 园豆:50 (初学一级) | 2011-01-18 10:29
这个FID查出来的只有一条数据,不会因为=出问题的
空头支票 | 园豆:50 (初学一级) | 2011-01-18 10:33
function里不允许有DML语句(insert,update,delete等)。 查询了一下…
Firen | 园豆:5385 (大侠五级) | 2011-01-18 10:39
是这样的,看了一下帮助文档里面写着: function_body 指定一系列定义函数值的 Transact-SQL 语句,这些语句在一起使用不会产生负面影响(例如修改表)。
空头支票 | 园豆:50 (初学一级) | 2011-01-21 21:15
其他回答(2)
0

看意思好像不能在里面用update,如果想用,换成procedure吧。

顾晓北 | 园豆:10898 (专家六级) | 2011-01-18 16:08
0

只能执行select语句,不支持update,insert,

青牛客 | 园豆:562 (小虾三级) | 2011-01-19 16:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册