我一直有这样的错误:有什么想法吗?
无效使用函数中的“newid”中的副作用或时间依赖运算符。
我和MS-SQL Server 2005一起工作。下面是T-SQL语句:
Create Function [dbo].[GetNewNumber]( )
RETURNS int
AS
BEGIN
Declare @code int
set @code = (SELECT CAST(CAST(newid() AS binary(3)) AS int) )
RETURN (@code)
END发布于 2010-02-02 18:54:12
该函数将不允许您使用NewID,但是可以使用它。
Create View vwGetNewNumber
as
Select Cast(Cast(newid() AS binary(3)) AS int) as NextID
Create Function [dbo].[GetNewNumber] ( ) RETURNS int
AS
BEGIN
Declare @code int
Select top 1 @code=NextID from vwGetNewNumber
RETURN (@code)
END然后,您可以按计划使用select dbo.[GetNewNumber]()。
发布于 2010-02-02 18:56:34
不能在函数中使用NEWID()。
一个常见的解决方法(在我的经验中,更多的是GETDATE()的需要)是必须传递它:
Create Function [dbo].[GetNewNumber](@newid UNIQUEIDENTIFIER )
RETURNS int
AS
BEGIN
Declare @code int
set @code = (SELECT CAST(CAST(@newid AS binary(3)) AS int) )
RETURN (@code)
END并称之为:
SELECT dbo.GetNewNumber(NEWID())发布于 2010-02-02 18:59:01
这必须通过函数调用来完成吗?每当我需要这个功能时,我只需使用:
checksum(newid())这将产生负数--如果它们必须是正数,您可以使用
abs(checksum(newid()))https://stackoverflow.com/questions/2186692
复制相似问题