读取 Firebird 存储过程的返回值
Read return values of a Firebird stored procedure
>我有这个火鸟存储过程:
SET TERM ^ ;
CREATE PROCEDURE MYSP ( FIRSTPARAM Varchar(3) )
RETURNS ( ERROR Varchar(128) )
AS BEGIN
/* a lot of things, including setting a value to ERROR */
suspend;
END^
SET TERM ; ^
我需要在生成器 XE2 C++中执行此过程,最后读取其返回值 ( ERROR
) 以查看它是否成功。过程仅返回一行。
我尝试了这种方式:
TIBQuery* q = DMH->ordQuery;
q->Close( );
q->SQL->Clear( );
q->SQL->Text = "EXECUTE PROCEDURE MYSP(:P1)";
if ( !DMH->ordTrans->InTransaction )
{
MakeCommit = true;
DMH->ordTrans->StartTransaction( );
}
if ( !q->Prepared )
q->Prepare( );
q->Params->ParamByName( "P1" )->Value = "abc";
q->Open();
//success if error field contains NULL
TField* errorField = q->FieldByName( "ERROR" );
bool success = errorField->IsNull;
if ( MakeCommit )
DMH->ordTrans->Commit( );
它给了我一个关于errorField
访问冲突,因为它找不到这样的字段。
我不得不更改语句:
SELECT ERROR
FROM MYSP(:P1)
相关文章:
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 存储函数返回值或立即使用c++
- 返回值存储在哪里?
- C++使用存储过程返回结果
- 存储指向函数返回值的指针
- 不从成员函数C 存储返回值认为不良习惯
- 从函数的返回值将元素C++存储到 std::vector 中时出现意外结果
- 将函数的返回值存储在元组中
- 如果我不将其存储在任何地方,返回值会发生什么情况?
- 读取 Firebird 存储过程的返回值
- 存储返回引用的函数的返回值
- 将成员函数的返回值存储在数组中C++
- 存储在静态常量整数 (C++) 中的对数函数的错误返回值
- 强制将函数的返回值存储在常量变量中/作为常量处理
- MSSQL服务器存储过程在从c++调用时不返回输出参数
- 通过OCI调用Oracle存储过程,并在C++中使用out-ref游标返回结果
- 将返回值存储为常量引用,而不是存储为值
- 尝试存储映射插入的返回值时出错
- 为什么SQL服务器将值传递给存储过程中的OUTPUT变量?
- 其中是存储的int main()的返回值