Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: MSSQL can not create stored function
MSSQL can not create stored function
Posted: 2008/01/29 04:22
 
Hello, Diman

i've got a problem trying to create a function using the script file (using the adexecutor tool)

here is the sql file:

 SET CMDSEP ; SET ECHO ON ALL TRIM 100 USE MYDB ; IF EXISTS (select 1 from dbo.sysobjects where id object_id('[dbo].[inet_aton]') )     DROP FUNCTION [dbo].[inet_aton] ; CREATE FUNCTION [dbo].[inet_aton] (@IP VARCHAR(15))  RETURNS BIGINT AS  BEGIN    DECLARE @A BIGINT, @B BIGINT, @C BIGINT, @D BIGINT    DECLARE @iBegin INT, @iEnd INT    SELECT @iBegin=1    SELECT @iEnd=CHARINDEX('.', @IP)    SELECT @A=CAST(SUBSTRING(@IP, @iBegin, @iEnd-@iBegin) AS BIGINT)    SELECT @iBegin=@iEnd+1    SELECT @iEnd=CHARINDEX('.', @IP, @iBegin)    SELECT @B=CAST(SUBSTRING(@IP, @iBegin, @iEnd-@iBegin) AS BIGINT)    SELECT @iBegin=@iEnd+1    SELECT @iEnd=CHARINDEX('.', @IP, @iBegin)    SELECT @C=CAST(SUBSTRING(@IP, @iBegin, @iEnd-@iBegin) AS BIGINT)    SELECT @iBegin=@iEnd+1    SELECT @iEnd=CHARINDEX('.', @IP, @iBegin)    SELECT @D=CAST(SUBSTRING(@IP, @iBegin15) AS BIGINT)    DECLARE @IPNumber BIGINT    SELECT @IPNumber=@A*16777216+@B*65536+@C*256+@D    RETURN @IPNumber END  ;



The error message is:
CREATE FUNCTION [dbo].[inet_aton] (@IP VARCHAR(15))
RETURNS BIGINT AS
BEGIN
DECLARE @A BIG ...
ERROR: SQL state: 42000. Native error: 156. Error message:
[Microsoft][SQL Native Client][SQL Server]Неправильный синтаксис около ключевого слова "CREATE".

however, if I type the same function in AdExecutor GUI it works and the function has been created

any suggestions?
Re:MSSQL can not create stored function
Posted: 2008/01/30 00:05
 
Hello

1) Replace ';' command separator with GO, for example. That should work.
2) I will fix this issue.

Regards,
Dmitry
Re:MSSQL can not create stored function
Posted: 2008/01/30 07:30
 
Hi, there

unfortunately, it doesn't fix the issue

if i do:

 SET CMDSEP GO SET ECHO ON ALL TRIM 100 USE ESERV3 GO IF EXISTS (select 1 from dbo.sysobjects where id object_id('[dbo].[inet_aton]') )     DROP FUNCTION [dbo].[inet_atonGO CREATE FUNCTION [dbo].[inet_aton] (@IP VARCHAR(15))  RETURNS BIGINT AS  BEGIN    DECLARE @A BIGINT, @B BIGINT, @C BIGINT, @D BIGINT    DECLARE @iBegin INT, @iEnd INT    SELECT @iBegin=1    SELECT @iEnd=CHARINDEX('.', @IP)    SELECT @A=CAST(SUBSTRING(@IP, @iBegin, @iEnd-@iBegin) AS BIGINT)    SELECT @iBegin=@iEnd+1    SELECT @iEnd=CHARINDEX('.', @IP, @iBegin)    SELECT @B=CAST(SUBSTRING(@IP, @iBegin, @iEnd-@iBegin) AS BIGINT)    SELECT @iBegin=@iEnd+1    SELECT @iEnd=CHARINDEX('.', @IP, @iBegin)    SELECT @C=CAST(SUBSTRING(@IP, @iBegin, @iEnd-@iBegin) AS BIGINT)    SELECT @iBegin=@iEnd+1    SELECT @iEnd=CHARINDEX('.', @IP, @iBegin)    SELECT @D=CAST(SUBSTRING(@IP, @iBegin15) AS BIGINT)    DECLARE @IPNumber BIGINT    SELECT @IPNumber=@A*16777216+@B*65536+@C*256+@D    RETURN @IPNumber END  GO



I've got the following error messages:
IF EXISTS (select 1 from dbo.sysobjects where id = object_id('[dbo].[inet_aton]') ...
ERROR: SQL state: 42000. Native error: 102. Error message:
[Microsoft][SQL Native Client][SQL Server]Неправильный синтаксис около "GO".
SQL state: 42000. Native error: 111. Error message:
[Microsoft][SQL Native Client][SQL Server]CREATE FUNCTION должна быть первой инструкцией в пакетном запросе.
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 137. Error message:
[Microsoft][SQL Native Client][SQL Server]Необходимо объявить скалярную переменную "@IP".
SQL state: 42000. Native error: 178. Error message:
[Microsoft][SQL Native Client][SQL Server]Инструкцию RETURN с возвращаемым значением нельзя использовать в данном контексте.
Re:MSSQL can not create stored function
Posted: 2008/01/30 07:32
 
1) Please use either tickets, either forum.
2) Put GO on new line:

 USE ESERV3  GO

Re:MSSQL can not create stored function
Posted: 2008/01/31 06:05
 
Right, it works. Many thanks