用SELECT@listid_d int @num int @listid char(11)SELECT @listid_d = CAST( @listid AS int ) + @num SELECT @listid = cast(@listid_d as char)
set @listid = cast(@listid_d as char) -----> set @listid = cast(@listid_d as char(11))
你的@listid是CHAR类型的,要去空格 @listid_d int @num int @listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num SELECT @listid = cast(@listid_d as char)
你的@listid是CHAR类型的,要去空格 @listid_d int @num int @listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num SELECT @listid = cast(@listid_d as char)
你的@listid是CHAR类型的,要去空格 @listid_d int @num int @listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num SELECT @listid = cast(@listid_d as char)
@listid_d int @num int @listid char(11)set @listid_d = CAST( trim(@listid) AS bigint ) + @num set @listid = cast(@listid_d as char(11))
要先赋值,然后再转换,不要有NULL。
to gzhughie(hughie) 的确可以那样写 但好像你少了from 如果光是select 运行会有错的!SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num from xxxxx SELECT @listid = cast(@listid_d as char) from xxxxx我的愚见!
TO zhdleo(叮东) SQL中SELECT的用途很广,如付值、计算等等,不象ORACLE,还需要虚拟表DUAL,在SQL中付值最好用SELECT,用SET会有限制的。
具个例子: as declare @new_avg int if update(grade1) begin select @new_avg=(inserted.grade1+inserted.grade2)/2.0 ****** update Stu_grade set av_grade=@new_avg where Stu_grade.Stu_id=inserted.Stu_id end******初没有from inserted 运行就是不能通过,加上了就可以,而且完成了所需的要求。你说呢???
@num int
@listid char(11)SELECT @listid_d = CAST( @listid AS int ) + @num
SELECT @listid = cast(@listid_d as char)
----->
set @listid = cast(@listid_d as char(11))
@listid_d int
@num int
@listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num
SELECT @listid = cast(@listid_d as char)
@listid_d int
@num int
@listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num
SELECT @listid = cast(@listid_d as char)
@listid_d int
@num int
@listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num
SELECT @listid = cast(@listid_d as char)
@num int
@listid char(11)set @listid_d = CAST( trim(@listid) AS bigint ) + @num
set @listid = cast(@listid_d as char(11))
但好像你少了from
如果光是select 运行会有错的!SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num from
xxxxx
SELECT @listid = cast(@listid_d as char) from xxxxx我的愚见!
SQL中SELECT的用途很广,如付值、计算等等,不象ORACLE,还需要虚拟表DUAL,在SQL中付值最好用SELECT,用SET会有限制的。
今天我也作了个类似的trigger,
在实现部分,也是个运算赋值,用的是select,
里面都有表的别名了,但还是要我在后面加上了个from table_name没有,就不能运行通过呀!
as
declare @new_avg int
if update(grade1)
begin
select @new_avg=(inserted.grade1+inserted.grade2)/2.0 ******
update Stu_grade
set av_grade=@new_avg
where Stu_grade.Stu_id=inserted.Stu_id
end******初没有from inserted
运行就是不能通过,加上了就可以,而且完成了所需的要求。你说呢???