我有以下存储过程
ALTER PROCEDURE [dbo].[sp_web_orders_insert]
(
@userId int = default,
@custId int = default,
@orderDate datetime = default,
@orderTotal money = default,
@statusId int = default,
@orderReference varchar(50) = default,
@custReference varchar(50) = default,
@order_ID INT output,
@orderReferenceOutput varchar(50) output
)
AS
SET NOCOUNT OFF;
INSERT INTO [web_orders] ([user_ID], [cust_ID], [orderDate], [orderTotal], [statusId], [orderReference], [custReference])
VALUES (@userId, @custId, @orderDate, @orderTotal, @statusId , 'PLC' + REPLICATE('0', (7 - LEN((select MAX(order_ID) from web_orders)))) + CAST((select(max(order_ID)+1) from web_orders) AS VARCHAR(5)), @custReference);
SET @order_ID = @@IDENTITY
SET @orderReferenceOutput = select top 1 orderReference from web_orders但是在select附近遇到了语法问题,我如何才能得到刚刚插入的orderReference的值呢?
发布于 2011-08-19 17:11:40
两点:
SCOPE_IDENTITY()而不是@@IDENTITY (参见why this is here或Google ...)SELECT语句获取您的值<代码>F29
类似于:
SET @order_ID = SCOPE_IDENTITY()
SELECT
@orderReferenceOutput = SELECT orderReference
FROM dbo.web_orders
WHERE order_Id = @order_ID发布于 2011-08-19 17:12:42
尝试以下代码部分,希望它能对您有所帮助
SET @orderReferenceOutput = select @orderReference=(top 1 orderReference) from web_orders发布于 2011-08-19 17:23:40
select @order_ID = order_ID, @orderReferenceOutput = orderReference
from dbo.web_orders
where order_ID = SCOPED_IDENTITIY();或者去掉输出参数,直接返回插入记录:
select * from dbo.web_orders where order_Id = SCOPED_IDENTITIY();是。过程可以返回数据,就像查询一样。
https://stackoverflow.com/questions/7119339
复制相似问题