Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
请教LXL老师,下述触发器代码是否有误?特别是红色部分。
CREATE trigger 住院信息_设置拼音码 ON 住院信息
FOR INSERT, UPDATE
AS
UPDATE 住院信息
SET 拼音码=dbo.GetPinyinInitials(a.姓名, 10)
FROM 住院信息 a JOIN inserted b ON a.序号=b.序号 AND a.姓名=b.姓名
语法没错。红字是自定义函数吧,必须看代码才知道对不对。
如果序号是主键的话
a.序号=b.序号 就够了
没必要a.姓名=b.姓名
create function GetPinyinInitials (@string varchar(32), @max_length smallint)
returns varchar(16)
as
begin
declare @result varchar(16),
@char varchar(2),
@letter char(1),
@length smallint,
@ix smallint
set @length=len(@string)
if @length>@max_length
set @length=@max_length
set @ix=1
set @result=''
while @ix<=@length
begin
set @char=substring(@string, @ix, 1)
set @letter=null
select @letter=substring(读音_1, 1, 1) from 汉字读音表 where 汉字=@char
if @letter is not null
set @result=@result+@letter
set @ix=@ix+1
end
return(@result)
end
/****** Object: UserDefinedFunction [dbo].[fun_getPY_jianpin] Script Date: 10/21/2009 13:50:30 ******/ SET QUOTED_IDENTIFIER ON
GO |