Sql 在返回结果集的存储过程中设置参数
我正试图整合一些代码,但在我打开这个特定的蠕虫罐头之前,我想从你们这里了解一下。如果我有几个存储过程 存储过程1-“主程序”,设置@test sproc2—在@test存在时执行的过程,并返回resultset和(如果可能)resets@serial sproc3—在@test不存在时执行并返回resultset和(如果可能)resets@serial的过程 存储过程1Sql 在返回结果集的存储过程中设置参数,sql,sql-server,vb.net,vba,Sql,Sql Server,Vb.net,Vba,我正试图整合一些代码,但在我打开这个特定的蠕虫罐头之前,我想从你们这里了解一下。如果我有几个存储过程 存储过程1-“主程序”,设置@test sproc2—在@test存在时执行的过程,并返回resultset和(如果可能)resets@serial sproc3—在@test不存在时执行并返回resultset和(如果可能)resets@serial的过程 存储过程1 @leftStack INT, @leftTray INT, @midStack INT, @
@leftStack INT,
@leftTray INT,
@midStack INT,
@midTray INT,
@rightStack INT,
@rightTray INT
AS
DECLARE @soLineNumber varchar(50)
DECLARE @serial VARCHAR(50)
DECLARE @rack INT
DECLARE @tray INT
DECLARE @position INT
SELECT @test = oL.[SERIAL_NUMBER]
FROM [ROBOTICS_OPTICS_MECHUAT].[dbo].[AOF_ORDER_OPTICS] AS oL
WHERE NOT EXISTS
(
SELECT [SERIAL_NUMBER]
FROM [ROBOTICS_OPTICS_MECHUAT].[dbo].[AOF_OPTIC_RESULTS] AS rL
WHERE oL.[SERIAL_NUMBER] = rL.[SERIAL_NUMBER]
)
AND NOT EXISTS
(
SELECT [SERIAL_NUMBER]
FROM [ROBOTICS_OPTICS_MECHUAT].[dbo].[AOF_OPTIC_INSERTED] AS oI
WHERE oL.[SERIAL_NUMBER] = oI.[SERIAL_NUMBER]
)
-- AND oL.[SO_LINE_NUMBER] = @soLineNumber --pick regardless of SO line number, to reduce gaps between lines
AND ((oL.[RACK] = @leftStack AND oL.[TRAY] = @leftTray)
OR (oL.[RACK] = @midStack AND oL.[TRAY] = @midTray)
OR (oL.[RACK] = @rightStack AND oL.[TRAY] = @rightTray))
ORDER BY [SO_LINE_NUMBER] ASC
IF NULLIF(@test, '') IS NOT NULL
BEGIN
EXEC sproc2
END
IF NULLIF(@test, '') IS NULL
BEGIN
EXEC sproc3
END
UPDATE [ROBOTICS_OPTICS_MECHUAT].[dbo].[AOF_ORDER_OPTICS] SET [PICKED] = 'True' WHERE [SERIAL_NUMBER] = @serial
END
我的问题是:
1) 如何从存储过程2和存储过程3重置@serial
2) 在ADO记录集查询中,执行的存储过程的结果是否会拉入,如果是,如何拉入?要使其工作,应如下定义
sproc2
和sproc3
:
CREATE PROC sproc2 @test VARCHAR(50), @serial VARCHAR(50) OUTPUT
它的作用是将
@test
的值作为值参数发送。@serial
上的输出
关键字使您能够跟踪在@serial
上所做的任何更改。测试将仅在存储过程1中可用。这就是临时表和变量的工作方式。如何在sproc1中执行sproc1以及处理@serial
?如果从ADO执行sproc1,SPROC2或3的结果集是否会按预期生成?i、 e.如果我在存储过程控制2中的表中选择col1、col2、col3,col1、col2和col3是否会显示为执行存储过程控制1的记录集结果?