您能否使用 cfstoredproc 访问存储过程的 return,即使 return 未定义为输出参数?
Can you access the return of a stored proc using cfstoredproc, even if return is not defined as an out parameter?
我有一个存储过程,我想使用 Coldfusion cfstoredproc 标签访问其 return。但是,return 变量未与 6 个“输入”参数一起列为输出参数。请参阅下面的程序代码:
CREATE PROCEDURE [dbo].[sp_Hire_AddEVerifyEmpCloseCase]
(
@e_verify_id bigint
,@ClientSftwrVer varchar(30)=null
,@CaseNbr char(15)
,@CloseStatus varchar(50)
,@CurrentlyEmployed varchar(1)
,@submit_user_id int
//THIS LINE IS MISSING: @EmpCloseCase_Id int OUTPUT
)
AS
BEGIN
DECLARE @EmpCloseCase_id int
SET @EmpCloseCase_id=0
SELECT @EmpCloseCase_id = EmpCloseCase_id FROM Appl_Hired_EVerify_EmpCloseCase WITH(NOLOCK) WHERE e_verify_id = @e_verify_id
BEGIN TRANSACTION EmpCloseCase
BEGIN TRY
IF(@EmpCloseCase_id = 0) BEGIN
INSERT INTO Appl_Hired_EVerify_EmpCloseCase(e_verify_id,ClientSftwrVer,CaseNbr,CloseStatus,CurrentlyEmployed, systemdate,submit_user_id)
VALUES (@e_verify_id,@ClientSftwrVer,@CaseNbr,@CloseStatus,@CurrentlyEmployed,GETDATE(),@submit_user_id)
SET @EmpCloseCase_id=ISNULL(SCOPE_IDENTITY(),0)
END ELSE BEGIN
UPDATE Appl_Hired_EVerify_EmpCloseCase
SET ClientSftwrVer = @ClientSftwrVer,
CaseNbr = @CaseNbr,
CloseStatus = @CloseStatus,
CurrentlyEmployed = @CurrentlyEmployed,
systemdate = GETDATE(),
submit_user_id = @submit_user_id
WHERE EmpCloseCase_id = @EmpCloseCase_id
END
COMMIT TRANSACTION EmpCloseCase
END TRY
BEGIN CATCH
SET @EmpCloseCase_id=0
ROLLBACK TRANSACTION EmpCloseCase
END CATCH
RETURN @EmpCloseCase_id
END
因为缺少“OUTPUT”行,如果我尝试在我的 cfstoredproc 中包含 <cfprocparam type="out" variable="empCloseCaseId">
,它会抛出错误。有什么方法可以使用 cfstoredproc access/store 这个 return 变量 @EmpCloseCase_id 的值,而不必添加缺少的“OUTPUT”行或以其他方式更改 proc 的代码?
改变
RETURN @EmpCloseCase_id
至
SELECT @EmpCloseCase_id as emp_close_case_id
并在您的 cfstoredproc
调用中添加
<cfprocresult name="foo">
这将变量 foo
定义为具有单行和单列 emp_close_case_id
的查询。
<cfoutput>
#foo.emp_close_case_id#
</cfoutput>
编辑: 如果不正确声明 output
变量或返回带有 select
语句的数据集,则无法访问该数据。 SQL 服务器文档:Return Data from a Stored Procedure
我有一个存储过程,我想使用 Coldfusion cfstoredproc 标签访问其 return。但是,return 变量未与 6 个“输入”参数一起列为输出参数。请参阅下面的程序代码:
CREATE PROCEDURE [dbo].[sp_Hire_AddEVerifyEmpCloseCase]
(
@e_verify_id bigint
,@ClientSftwrVer varchar(30)=null
,@CaseNbr char(15)
,@CloseStatus varchar(50)
,@CurrentlyEmployed varchar(1)
,@submit_user_id int
//THIS LINE IS MISSING: @EmpCloseCase_Id int OUTPUT
)
AS
BEGIN
DECLARE @EmpCloseCase_id int
SET @EmpCloseCase_id=0
SELECT @EmpCloseCase_id = EmpCloseCase_id FROM Appl_Hired_EVerify_EmpCloseCase WITH(NOLOCK) WHERE e_verify_id = @e_verify_id
BEGIN TRANSACTION EmpCloseCase
BEGIN TRY
IF(@EmpCloseCase_id = 0) BEGIN
INSERT INTO Appl_Hired_EVerify_EmpCloseCase(e_verify_id,ClientSftwrVer,CaseNbr,CloseStatus,CurrentlyEmployed, systemdate,submit_user_id)
VALUES (@e_verify_id,@ClientSftwrVer,@CaseNbr,@CloseStatus,@CurrentlyEmployed,GETDATE(),@submit_user_id)
SET @EmpCloseCase_id=ISNULL(SCOPE_IDENTITY(),0)
END ELSE BEGIN
UPDATE Appl_Hired_EVerify_EmpCloseCase
SET ClientSftwrVer = @ClientSftwrVer,
CaseNbr = @CaseNbr,
CloseStatus = @CloseStatus,
CurrentlyEmployed = @CurrentlyEmployed,
systemdate = GETDATE(),
submit_user_id = @submit_user_id
WHERE EmpCloseCase_id = @EmpCloseCase_id
END
COMMIT TRANSACTION EmpCloseCase
END TRY
BEGIN CATCH
SET @EmpCloseCase_id=0
ROLLBACK TRANSACTION EmpCloseCase
END CATCH
RETURN @EmpCloseCase_id
END
因为缺少“OUTPUT”行,如果我尝试在我的 cfstoredproc 中包含 <cfprocparam type="out" variable="empCloseCaseId">
,它会抛出错误。有什么方法可以使用 cfstoredproc access/store 这个 return 变量 @EmpCloseCase_id 的值,而不必添加缺少的“OUTPUT”行或以其他方式更改 proc 的代码?
改变
RETURN @EmpCloseCase_id
至
SELECT @EmpCloseCase_id as emp_close_case_id
并在您的 cfstoredproc
调用中添加
<cfprocresult name="foo">
这将变量 foo
定义为具有单行和单列 emp_close_case_id
的查询。
<cfoutput>
#foo.emp_close_case_id#
</cfoutput>
编辑: 如果不正确声明 output
变量或返回带有 select
语句的数据集,则无法访问该数据。 SQL 服务器文档:Return Data from a Stored Procedure