Delphi 为什么此带有参数的FireDAC SQL Server查询失败?

Delphi 为什么此带有参数的FireDAC SQL Server查询失败?,delphi,firedac,Delphi,Firedac,这是我第一次使用参数进行查询。(在SQL Server中使用Delphi和FireDAC) (我计划在这项工作完成后使用DML。) 为什么我会出现这个错误: [FireDAC][Phys][ODBC][Microsoft][SQL Server本机客户端11.0] “:”附近的[SQL Server]语法不正确 使用此查询: procedure TForm2.Button1Click(Sender: TObject); var FDParam: TFDParam; begin FDQue

这是我第一次使用参数进行查询。(在SQL Server中使用Delphi和FireDAC)

(我计划在这项工作完成后使用DML。)

为什么我会出现这个错误:

[FireDAC][Phys][ODBC][Microsoft][SQL Server本机客户端11.0]
“:”附近的[SQL Server]语法不正确

使用此查询:

procedure TForm2.Button1Click(Sender: TObject);
var
  FDParam: TFDParam;
begin
  FDQuery1.SQL.Text := 'CREATE TABLE TestTable (Column1 Int)';
  FDQuery1.ExecSQL;

  FDQuery1.SQL.Text := 'INSERT INTO TestTable (Column1) VALUES (111)';
  FDQuery1.ExecSQL;  // works fine

  FDParam := FDQuery1.Params.Add;
  FDParam.Name := 'Column1';
  FDParam.DataType := ftInteger;
  FDParam.Paramtype := ptInput;

  FDQuery1.SQL.Text := 'INSERT INTO TestTable (Column1) VALUES(:Column1)' ;
  FDQuery1.ParamByName('Column1').AsInteger := 222;
  FDQuery1.ExecSQL;  // FAILS 
end;

肯和约翰:谢谢你的评论

此处有人已将连接的ResourceOptions.ParamCreate和ParamExpand设置为false

在FDQuery中重写它可以消除这个问题


再次感谢你

注释创建参数的代码并再次运行。错误消失了吗?大多数DB驱动程序将解析SQL并自动创建参数,使用
AsXXXX
将处理参数类型。我从来没有使用Delphi在任何DB组件的代码中创建过参数。我已经在我的笔记本电脑上使用非常旧的SQL server 7和SQL server 2000运行了上述代码,并且都运行得非常完美。然后,请将此作为答案,以帮助未来的搜索者。