/**
* 取得表的主键方法
*
* author tanxin 2011-11-25
*/
create function [dbo].[haf_sys_id_create]
(
@id char(40)
)
returns char(40)
as
begin
declare @strId char(40)
set @strId = newid()
set @strId = 'HIT'+ substring(@strId, 1, 8)
+ substring(@strId, 10, 4)
+ substring(@strId, 15, 4)
+ substring(@strId, 20, 4)
+ substring(@strId, 25, 12)
return @strId
end消息 443,级别 16,状态 1,过程 haf_sys_id_create,第 14 行
在函数内的 'newid' 中对带副作用的或依赖于时间的运算符的使用无效。
怎么解决呢?
* 取得表的主键方法
*
* author tanxin 2011-11-25
*/
create function [dbo].[haf_sys_id_create]
(
@id char(40)
)
returns char(40)
as
begin
declare @strId char(40)
set @strId = newid()
set @strId = 'HIT'+ substring(@strId, 1, 8)
+ substring(@strId, 10, 4)
+ substring(@strId, 15, 4)
+ substring(@strId, 20, 4)
+ substring(@strId, 25, 12)
return @strId
end消息 443,级别 16,状态 1,过程 haf_sys_id_create,第 14 行
在函数内的 'newid' 中对带副作用的或依赖于时间的运算符的使用无效。
怎么解决呢?
解决方案 »
- SQL中的exist的使用
- 约束:字符串不允许出现"0-9"、"/"、","以外的字符
- 查询生日sql语句?在线等...
- 问个简单问题:怎样累计两个表中相同字段的数值?
- 难以解决的SQL中数据区间的查询问题!
- 为什么输出的文本格式是这样的呢??
- sqlserver存储过程谁能帮忙改为oracle
- 请liangCK大侠, wzy_love_sly大侠,pt1314917大侠等帮忙帮到底,再来拯救一下下,拜谢!
- 445端口一关,客户端就无法连接到数据库,SQL数据库与445端口有何关系?
- win2003下应该安装sql2005那个版本
- 请教高手一条SQL的写法
- 分析一个汉字转化成拼音首字母的函数,经过测试,很好用
函数的要求返回的结果是确定的
/**
* 取得表的主键方法
*
* author tanxin 2011-11-25
*/
create procedure [dbo].[haf_sys_id_create]
(
@strID char(40) output
)
as
begin
set @strId = newid()
set @strId = 'HIT'+ substring(@strId, 1, 8)
+ substring(@strId, 10, 4)
+ substring(@strId, 15, 4)
+ substring(@strId, 20, 4)
+ substring(@strId, 25, 12)
end
go
declare @strID char(40)
exec [haf_sys_id_create] @strID output
select @strID
/*
----------------------------------------
HITEE63CF373CD64F4BAD519D8A6D41B340 (1 行受影响)*/
go
drop procedure [dbo].[haf_sys_id_create]
楼主要是想在insert into 里使用函数获取id,改存储过程也不行,那就别用newid了