日期:2014-05-17  浏览次数:20491 次

执行函数时,声明的变量值让它固定??
生成订单号的一个函数,

declare @order_no_new nvarchar(50)
set @order_no_new=(select dbo.Gen_Order_No())
在后面的语句中要重复用到@order_no_new,要怎样才能使得@order_no_new的值固定呢?

不知道大家明白我意思没。。。
------解决方案--------------------
那就向tbl_order_detail表Insert的时候不要重新去取Gen_Order_No(),而是从主表tbl_order里获取201211060016单号就好了呀。

declare @order_no_new nvarchar(50)
set @order_no_new=(select dbo.Gen_Order_No())
假如@order_no_new = '201211060016'

Insert Into tbl_order(单号, 总额)
Values(@order_no_new, 1141.93)

Insert  Into tbl_order_detail(单号, 小计)
Select @order_no_new, 259.00
Union
Select @order_no_new, 441.50
Union
Select @order_no_new, 50.00

还有一种方式,就是如果你的表设计的真的这么简单的话,完全可以先写子表,然后主表中将子表Group By一下回写回去就好了。