Page 1 of 1

UniSQL Exec mysql script is Error !

Posted: Thu 04 Dec 2014 06:37
by leeonsoft
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;
//

Re: UniSQL Exec mysql script is Error !

Posted: Tue 09 Dec 2014 08:53
by ViktorV
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.