我试图在lazarus中创建一个程序,该程序应在mysql中创建一个表。
在我编写的代码下面:
sqlquery2.SQL.AddText('CREATE TABLE `oferte`.:id (`idnew_table` INT NOT NULL, PRIMARY KEY (`idnew_table`));');
sqlquery2.Params.ParamByName('id').asstring:=client.text;
启动此代码时,出现以下错误:
“您的SQL语法有误...”
我尝试过:
sqlquery2.SQL.AddText('CREATE TABLE `oferte`.`test1` (`idnew_table` INT NOT NULL, PRIMARY KEY (`idnew_table`));');
程序按预期运行,并且表已正确创建到数据库中。
我还编写了一个带有param的代码,该代码传入了sql,用于将数据插入表中,并且工作正常。
我运行的代码可以:
sqlquery1.sql.Clear;
sqlquery1.SQL.Text:='insert into stocpiese(denumire,stoc,furnizor,client,pretintrare,adaoscom,'+'cod,pretiesire, moneda ,schimbvalutar,datacumpararii)'+'values ( (:den),(:stoc),(:furn),(:client),(:pretin),(:adcom),'+'(:cod),(:preties),(:moneda),(:schimb),(:data));';
sqlquery1.Params.ParamByName('den').AsString:=denumire.text;
sqlquery1.Params.ParamByName('stoc').AsString:=stoc.text;
sqlquery1.Params.ParamByName('furn').AsString:=furnizorsele.text;
sqlquery1.Params.ParamByName('client').AsString:=clientsele.text;
sqlquery1.Params.ParamByName('pretin').AsString:=pretintrare.text;
sqlquery1.Params.ParamByName('adcom').AsString:=adcom.text;
sqlquery1.Params.ParamByName('cod').AsString:=codsele.text;
sqlquery1.Params.ParamByName('preties').AsString:=pretiesire.text;
sqlquery1.Params.ParamByName('moneda').AsString:='lei';
sqlquery1.Params.ParamByName('schimb').AsString:=edit3.text;
sqlquery1.Params.ParamByName('data').AsString:=FormatDateTime('dd-mm-yy', data+201);
if(MySQL57Connection1.connected=false)then MySQL57Connection1.connected:=true;
if(SQLTransaction1.active=false)then SQLTransaction1.active:=true;
sqlquery1.ExecSQL;
SQLTransaction1.CommitRetaining;
sqlquery1.Open;
我不明白,我错过了什么吗?
答案 0 :(得分:0)
您可以这样创建存储过程:
DELIMITER $$
CREATE PROCEDURE `create_my_table`(IN `table_name` TEXT)
BEGIN
SET @s=CONCAT('CREATE TABLE IF NOT EXISTS ',
`table_name`,
' (
`idnew_table` INT NOT NULL, PRIMARY KEY (`idnew_table`)
)
);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
,然后在调用它时传递任何字符串(或参数):
CALL create_my_table("anything");
您还可以在此处看到http://docs.pointclouds.org/1.0.0/classpcl_1_1registration_1_1_correspondence_rejector_trimmed.html