Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql server 2008中使用存储过程生成运行序列号的解决方案_Sql_Sql Server 2008 - Fatal编程技术网

sql server 2008中使用存储过程生成运行序列号的解决方案

sql server 2008中使用存储过程生成运行序列号的解决方案,sql,sql-server-2008,Sql,Sql Server 2008,如何通过使用sql server中的函数生成从0001到9999的运行序列号,如果在sql server中调用该函数,则应提供运行序列号,如果再次达到9999,则应重置0001 如果要执行上述任务,请在此方面提供帮助。关于这方面有很多好文章。试试谷歌 例如,请参见和,您可以使用以下步骤简单地获取序列号: CREATE PROCEDURE proc_GetSeqNumber AS BEGIN DECLARE @idt INT SET @idt = 0 WHILE (@idt < 9999)

如何通过使用sql server中的函数生成从0001到9999的运行序列号,如果在sql server中调用该函数,则应提供运行序列号,如果再次达到9999,则应重置0001


如果要执行上述任务,请在此方面提供帮助。

关于这方面有很多好文章。试试谷歌


例如,请参见和

,您可以使用以下步骤简单地获取序列号:

CREATE PROCEDURE proc_GetSeqNumber
AS
BEGIN
DECLARE @idt INT
SET @idt = 0
WHILE (@idt < 9999)
BEGIN
    SELECT @idt = @idt + 1
    PRINT @idt
    END
END
CREATE PROCEDURE proc\u GetSeqNumber
作为
开始
声明@idt INT
设置@idt=0
而(@idt<9999)
开始
选择@idt=@idt+1
打印@idt
结束
结束

函数无法更新、插入或删除,因此您无法存储变量并在下次调用该函数时检查其值。因此,使用函数是无法做到这一点的。

数据库能够记住值的唯一方法是将其存储在表中(在Oracle中,您可以使用序列,但SQL Server不使用序列)。因此,我将使用单个值创建一个表,函数将读取值,增加值,如果需要重置它。

你做了一个循环,显示了2到9999之间的数字,现在它如何回答这个问题?你没有抓住要点,这并没有回答allit创建的序列yy-mm-dd000001的问题
if @ItemsCount=0     
begin
                set @generatedSeNumber=1
end
else
   begin

SET @sql= 'insert into Senumber  values(('+@SeNumber+'))'
Exec (@sql)