sql - FireDAC 无法处理超过 30 个字符的参数名称
问题描述
我使用 Oracle 数据库版本 19.3.0,它可以处理超过 30 个字符的参数名称。如果我在 Delphi FireDAC 过程“ExecProc”中执行以调用 SQL 中的存储过程,Delphi 会抛出“ORA-01036:非法变量名称/编号”异常,并且该过程的调用过早终止,因为一个参数名称长于 30 个字符。是否有一些 FireDAC 属性可以在不更改参数名称长度的情况下更改此行为?
“C:\Program Files (x86)\Embarcadero\Studio\19.0\source\data\firedac\FireDAC.Phys.Oracle.pas”
解决方案
解决方案:将 pbByName 更改为 pbByNumber
procedure TForm5.Button1Click(Sender: TObject); begin
FDStoredProc1.ParamBindMode := pbByNumber;
FDStoredProc1.FetchOptions.Items := [fiBlobs, fiDetails]; //This disables automatic fetching of parameters from server
FDStoredProc1.Params.CreateParam(ftString,'Averylongparamternamethathopefullyislongerthanthirtycharacters',ptInput);
FDStoredProc1.params.CreateParam(ftString,'outparam',ptOutput);
FDStoredProc1.Params[0].AsString := 'Hello World';
FDStoredProc1.ExecProc;
ShowMessage(FDStoredProc1.Params[1].AsString);
end;
推荐阅读
- reactjs - 即使表格行上有唯一键,唯一键道具错误
- r - 在 R 中滑动期间更新的交互式绘图
- android - 在 Google Play 控制台中看不到隐私政策选项
- apache-spark - 如何使用自签名证书保护的 S3 (Minio) 运行 Apache Spark?
- arduino - Arduino Nano 和 HM-10 BLE 控制器之间的通信不起作用
- reactjs - 如何使用 JSZip 从 ReactJS 中的远程 URL 添加文件?
- c# - 如何在 ASP.NET MVC C# 项目的新选项卡中打开 PowerPoint 演示文稿
- java - 更改 sharedpreferences 数据后如何自动更改 android menuItem 数据?
- python - 如何对密码实施 3-try 授权?
- css - 如何使用css在悬停时翻转div