- 论坛徽章:
- 0
|
在PB中执行存储过程的问题
以下是我在PB中执行过程的一段,不知对你有无帮助。(Query_String是执行过程的SQL语句)
Prepare Sqlsa From uery_String;
If Sqlca.Sqlcode <>; 0 Then
Return_String = "0|"
MessageBox("数据库操作错误[PREPARE]",String(Sqlca.SqlErrText))
End If
Describe Sqlsa Into Sqlda;
If Sqlca.Sqlcode <>; 0 Then
Return_String = "0|"
MessageBox("数据库操作错误[DESCRIBE]",String(Sqlca.SqlErrText))
End If
Declare Cur_Procedure Dynamic Procedure For Sqlsa;
If Sqlca.Sqlcode <>; 0 Then
Return_String = "0|"
MessageBox("数据库操作错误[DECLARE]",String(Sqlca.Sqlcode) + ":" + String(Sqlca.SqlErrText))
End If
Execute Dynamic Cur_Procedure Using Descriptor Sqlda;
If Sqlca.Sqlcode <>; 0 And Sqlca.Sqlcode <>; 100 Then
Return_String = "0|"
MessageBox("数据库操作错误[EXECUTE]",String(Sqlca.Sqlcode) + ":" + String(Sqlca.SqlErrText))
End If
If Sqlca.Sqlcode = 0 Then
Fetch Cur_Procedure Using Descriptor Sqlda;
If Sqlca.Sqlcode <>; 0 And Sqlca.Sqlcode <>; 100 Then
Return_String = "0|"
MessageBox("数据库操作错误[FETCH]",String(Sqlca.Sqlcode) + ":" + String(Sqlca.SqlErrText))
End If
Do While Sqlca.Sqlcode = 0
For i = 1 To Sqlda.NumOutPuts
Choose Case Sqlda.OutParmType
Case typeinteger!,typedecimal!,typedouble!,typelong!,typereal!,typeboolean!
Return_String = Return_String + String(GetDynamicNumber(Sqlda,i)) + "|"
Case typeString!
Return_String = Return_String + GetDynamicString(Sqlda,i) + "|"
Case typedate!
Return_String = Return_String + String(GetDynamicDate(Sqlda,i)) + "|"
Case typetime!
Return_String = Return_String + String(GetDynamicTime(Sqlda,i)) + "|"
Case typedatetime!
Return_String = Return_String + String(GetDynamicDatetime(Sqlda,i)) + "|"
End Choose
Next
Fetch Cur_Procedure Using Descriptor Sqlda;
Loop
End If
Close Cur_Procedure; |
|