Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 即使return未定义为out参数,您是否可以使用cfstoredproc访问存储过程的返回?_Stored Procedures_Coldfusion - Fatal编程技术网

Stored procedures 即使return未定义为out参数,您是否可以使用cfstoredproc访问存储过程的返回?

Stored procedures 即使return未定义为out参数,您是否可以使用cfstoredproc访问存储过程的返回?,stored-procedures,coldfusion,Stored Procedures,Coldfusion,我有一个存储过程,我想使用Coldfusion-cfstoredproc标记访问它的返回。但是,返回变量未与6“in”参数一起列为out参数。请参阅下面的程序代码: CREATE PROCEDURE [dbo].[sp_Hire_AddEVerifyEmpCloseCase] ( @e_verify_id bigint ,@ClientSftwrVer varchar(30)=null ,@CaseNbr char(15)

我有一个存储过程,我想使用Coldfusion-cfstoredproc标记访问它的返回。但是,返回变量未与6“in”参数一起列为out参数。请参阅下面的程序代码:

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
由于该“输出”行丢失,如果我尝试在我的cfstoredproc中包含
,它将抛出一个错误。是否有任何方法可以使用cfstoredproc访问/存储此返回变量@EmpCloseCase_id的值,而无需添加缺少的“输出”行或以其他方式更改进程代码?

change

RETURN @EmpCloseCase_id

在您的
cfstoredproc
呼叫中,添加

<cfprocresult name="foo">

EDIT:如果不正确声明
输出
变量或使用
select
语句返回数据集,则无法访问该数据。SQL Server文档:

是否有任何方法可以在不更改任何存储过程代码的情况下访问它?我认为返回结果是更好的选择,但是。。。由于您使用RETURN的ate可能值得尝试cfstoredproc returncode=yes,它将填充变量cfstoredproc.statuscode。。。仅当您确实无法更改存储的进程时,因为通常不会使用
return
<cfprocresult name="foo">
<cfoutput>
    #foo.emp_close_case_id#
</cfoutput>