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
その「OUTPUT」行が欠落<cfprocparam type="out" variable="empCloseCaseId">
しているため、cfstoredprocに含めようとするとエラーがスローされます。欠落している「OUTPUT」行を追加したり、procのコードを変更したりせずに、cfstoredprocを使用してこの戻り変数@EmpCloseCase_idの値にアクセス/保存する方法はありますか?
変化する
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 Serverのドキュメント:ストアドプロシージャからデータを返す
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加