UniSQL Exec mysql script is Error !

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
leeonsoft
Posts: 7
Joined: Thu 09 May 2013 12:53

UniSQL Exec mysql script is Error !

Post by leeonsoft » Thu 04 Dec 2014 06:37

HI support
exec mysql script is Error !

var
FileName:string;
begin
FileName:='D:\FN_ECP_SCM_SplitStr.sql';
UniSQL1.SQL.LoadFromFile(FileName,TEncoding.UTF8);
UniSQL1.Execute;

Project Project1.exe raised exception class EMySqlException with message '
#42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'delimiter //
DROP FUNCTION if exists FN_ECP_SCM_SplitStr;
//

Create FUNCTI' at line 1'.
---------------------------
Break Continue Help
---------------------------

-- this is mysql script content

delimiter //
DROP FUNCTION if exists FN_ECP_SCM_SplitStr;
//

Create FUNCTION FN_ECP_SCM_SplitStr(
pStr nvarchar(2000),
pSeparator nvarchar(10),
pIndex int
)
RETURNS nvarchar(200)
BEGIN

declare viIndex int;
declare vNum int;
declare vTempStr nvarchar(2000);
declare vRstStr nvarchar(100);


set vNum=0;
set vRstStr='';
set vTempStr=pStr;

set viIndex =LOCATE(pSeparator,vTempStr);

if viIndex>=1 then
loop_Start1:loop
set vNum=vNum + 1;

if pIndex=vNum then
set vRstStr=LEFT(vTempStr,viIndex-1);
leave loop_Start1;
end if;

set vTempStr=substring(vTempStr,viIndex + 1);


set viIndex =LOCATE(pSeparator,vTempStr);

if viIndex<1 then
leave loop_Start1;
end if;
end loop;
end if;


if pIndex=vNum + 1 and vTempStr<>'' then
set vRstStr=vTempStr;
end if;

return vRstStr;

END;
//

ViktorV
Devart Team
Posts: 3168
Joined: Wed 30 Jul 2014 07:16

Re: UniSQL Exec mysql script is Error !

Post by ViktorV » Tue 09 Dec 2014 08:53

TUniSQL executes the whole script with no parsing, just sending the SQL to the server - and you are getting this error because of the "delimeter" word in the script, which is not a MySQL construct.
To solve the problem, run this script in TUniScript, having preset the TUniScript.ScanParams property to False.

Post Reply