当前位置:编程学习 > C#/ASP.NET >>

c# 把存储过程的返回值插入表中

SQLSERVER2008R2写了一个“流水账号”存储过程,就是把当前时间转成数字如2010/8/21 10:23转成2010082110230001. 问题是,我怎么把这个存储过程像数据库的自增一样,插入一行数据就自动执行一次存储过程,并且把返回值插入到‘number’字段里。
补充:CREATE PROCEDURE get_new_id
@NEW_ID VARCHAR(16) OUTPUT
AS
BEGIN
DECLARE @DATE DATETIME
DECLARE @YYYY VARCHAR(4)
DECLARE @MM VARCHAR(2)
DECLARE @DD VARCHAR(2)
SET @DATE = GETDATE()
SET @YYYY = DATEPART(yyyy, @DATE)
SET @MM = DATEPART(mm, @DATE)
SET @DD = DATEPART(dd, @DATE)
SET @YYYY = REPLICATE('0', 4 - LEN(@YYYY)) + @YYYY
SET @MM = REPLICATE('0', 2 - LEN(@MM)) + @MM
SET @DD = REPLICATE('0', 2 - LEN(@DD)) + @DD
SET @NEW_ID = NULL
SELECT TOP 1 @NEW_ID = [my_id] FROM [my_table] WHERE [my_id] LIKE @YYYY+@MM+@DD+'%' ORDER BY [my_id] DESC
IF @NEW_ID IS NULL
SET @NEW_ID = (@YYYY+@MM+@DD+'00001')
ELSE
BEGIN
DECLARE @NUM VARCHAR(5)
SET @NUM = CONVERT(VARCHAR, (CONVERT(INT, RIGHT(@NEW_ID, 5)) + 1))
SET @NUM = REPLICATE('0', 5 - LEN(@NUM)) + @NUM
SET @NEW_ID = @YYYY+@MM+@DD + @NUM
END
END
贴上存储过程。麻烦各位网友了
追问:新手。真心不会写,能帮忙写下么。存储过程名 get_new_id 它把当前时间转成201208211056+流水号(20120821105600001)
-----------
插入其他值的时候它也自动插入。触发器能更改最新插入的值么?万一我一次插入多行数据,触发器是否有效。帮我看看怎么搞定吧。存储过程铁出来了
答案:有很多种方法
    1,在存储过程里面是可以调用其他的存储过程的,在你添加的时候,账单号可以去调用 你的“流水账号”,取得值进行加入,这里最好用事务关联起来
   2,如楼上说的,用触发器,当满足一定条件的时候触发
   3,将你的“流水账号”存储过程写成自定义函数,当执行的时候 调用这个函数就可以
   根据你的实际情况选择一种方法
其他:你把他改成触发器就行喽。 

上一个:C#如何读取txt文件中的每一行string类并转化成datetime类型,然后求所有行之和以datetime类型输出
下一个:JS中event的button属性是什么意思啊?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,