Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка в синтаксисе  [new]
r83939
Member

Откуда:
Сообщений: 12
Прошу помощи. Где ошибка?
При выполнении процедуру появляется ошибка:
Сообщение 102, уровень 15, состояние 1, строка 8
Неправильный синтаксис около конструкции ",".
Процедура следующая:
CREATE PROCEDURE [dbo].[up_CreateTab]
AS
declare @SqlPara varchar(250)
declare @strTableName varchar(20)
declare @Year int
declare @Month int
declare @Day int
declare @MonthStr varchar(2)
declare @DayStr varchar(2)
declare @CurDay datetime
begin
select @CurDay = GETDATE()
select @CurDay = DATEADD(day, -1, @CurDay)

--get month value
select @Month = Month(@CurDay)
select @MonthStr = convert(varchar(2), @Month, 2)
if datalength(@MonthStr) = 1
select @MonthStr = '0' + @MonthStr

--get day value
select @Day = day(@CurDay)
select @DayStr = convert(varchar(2), @Day, 2)
if datalength(@DayStr) = 1
select @DayStr = '0' + @DayStr

--get table name
select @strTableName = 'SM_HisTableTest' + @MonthStr + @DayStr


SET @SqlPara = 'CREATE TABLE ' + @strTableName +'(
[sm_ID] [int] NOT NULL,
[sm_SubID] [tinyint] NOT NULL,
[Service_type] [varchar](6) NULL,
[OrgTON] [tinyint] NULL,
[OrgNPI] [tinyint] NULL,
[OrgAddr] [varchar](21) NOT NULL,
[DestTON] [tinyint] NULL,
[DestNPI] [tinyint] NULL,
[DestAddr] [varchar](21) NOT NULL,
[PRI] [tinyint] NULL,
[PID] [tinyint] NULL,
[SRR] [tinyint] NULL,
[DCS] [tinyint] NULL,
[Schedule] [varchar](21) NULL,
[Expire] [varchar](21) NULL,
[Final] [varchar](21) NULL,
[sm_Status] [tinyint] NULL,
[Error_Code] [tinyint] NULL,
[UDL] [tinyint] NULL,
[Sm_Type] [int] NULL,
[ScAddrType] [tinyint] NULL,
[ScAddr] [varchar](21) NULL,
[MOMscAddrType] [tinyint] NULL,
[MOMscAddr] [varchar](21) NULL,
[MTMscAddrType] [tinyint] NULL,
[MTMscAddr] [varchar](21) NULL,
[Schedulemode] [tinyint] NULL,
[UD] [varbinary](255) NULL,
[DeliverCount] [int] NULL,
[L2Cache] [int] NULL,
[L2CacheWriteCount] [int] NULL,
[Service] [int] NULL,
[RawOrgTON] [tinyint] NULL,
[RawOrgNPI] [tinyint] NULL,
[RawOrgAddress] [varchar](21) NULL,
[RawDestTON] [tinyint] NULL,
[RawDestNPI] [tinyint] NULL,
[RawDestAddress] [varchar](21) NULL,
[SubmitMulti_ID] [int] NULL,
[LastError1] [int] NULL,
[LastError2] [int] NULL,
[LastError3] [int] NULL,
[LastError4] [int] NULL,
[LastError5] [int] NULL,
[LastProfileID] [int] NULL,
[LastProfileName] [varchar](41) NULL,
[LastScheme] [int] NULL,
[LastLevel] [int] NULL,
[MOMSCTON] [tinyint] NULL,
[MOMSCNPI] [tinyint] NULL,
[MTMSCTON] [tinyint] NULL,
[MTMSCNPI] [tinyint] NULL,
[OrgAccount] [varchar](16) NULL,
[DestAccount] [varchar](16) NULL,
[OrgCommandID] [int] NULL,
[TLVsSeted] [int] NULL,
[RD] [tinyint] NULL,
[OrgGroup] [tinyint] NULL,
[FeeAfterScp] [int] NULL,
[Default_id] [int] NULL,
[bStatusReport] [tinyint] NULL,
[ConFlag] [tinyint] NULL,
[DestNetType] [int] NULL,
[DestIFType] [int] NULL,
[TLVsTotalLen] [int] NULL,
[TLVsEncodeData] [varbinary](256) NULL,
[TeleService] [int] NULL,
[OrgNetType] [int] NULL)'
exec (@SqlPara)
end
Ругается на строчку - [DestNPI] [tinyint] NULL,(См. вложение)
Хотя, при простом запросе создания таблицы в таком же виде все проходит без проблем.

К сообщению приложен файл. Размер - 0Kb
7 окт 09, 11:09    [7752031]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ну а вы смотрели, что вы получили в своей переменной @SqlPara ?
7 окт 09, 11:13    [7752055]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
А почему это процедура должна таблицу создавать?
Без процедуры ("простым запросом создания таблицы"), нельзя что ли?
7 окт 09, 11:13    [7752060]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
iljy
Member

Откуда:
Сообщений: 8711
r83939,

у вас переменная @SqlPara объявлена как varchar(250), поэтому весь запрос туда тупо не влез, вот вам и ошибка.
7 окт 09, 11:15    [7752071]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
r83939
Member

Откуда:
Сообщений: 12
меняю на varchar (8000) - та же ошибка на ту же строчку
7 окт 09, 11:32    [7752192]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
Glory
Member

Откуда:
Сообщений: 104760
r83939
меняю на varchar (8000) - та же ошибка на ту же строчку

И что вам опять мешает посмотреть содержимое переменной ?
7 окт 09, 11:34    [7752207]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
r83939
меняю на varchar (8000) - та же ошибка на ту же строчку
По всей видимости, у Вас SQL2005.
Лучше скрипт формировать в переменной типа NVARCHAR(MAX)
7 окт 09, 11:40    [7752257]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
r83939
Member

Откуда:
Сообщений: 12
Содержимое переменной-
@SqlPara CREATE TABLE SM_HisTableTest1006(
[sm_ID] [int] NOT NULL,
[sm_SubID] [tinyint] NOT NULL,
[Service_type] [varchar](6) NULL,
[OrgTON] [tinyint] NULL,
[OrgNPI] [tinyint] NULL,
[OrgAddr] [varchar](21) NOT NULL,
[DestTON] [tinyint] NULL,
varchar
7 окт 09, 11:42    [7752271]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
r83939
Member

Откуда:
Сообщений: 12
Вы были правы, было зарезервиравано недостаточно места
Правда процедура прошла также с @SqlPara varchar(8000)( я ошибся)
Спасибо - отличный суппорт.
7 окт 09, 11:51    [7752364]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
Glory
Member

Откуда:
Сообщений: 104760
r83939
Содержимое переменной-
@SqlPara CREATE TABLE SM_HisTableTest1006(
[sm_ID] [int] NOT NULL,
[sm_SubID] [tinyint] NOT NULL,
[Service_type] [varchar](6) NULL,
[OrgTON] [tinyint] NULL,
[OrgNPI] [tinyint] NULL,
[OrgAddr] [varchar](21) NOT NULL,
[DestTON] [tinyint] NULL,
varchar

И вы считаете, что это синтаксическиправильный запрос ?
7 окт 09, 11:51    [7752371]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
r83939
Member

Откуда:
Сообщений: 12
Glory,
Это то что давал деббагер, я просто скопировал строчку
7 окт 09, 11:57    [7752415]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в синтаксисе  [new]
Glory
Member

Откуда:
Сообщений: 104760
r83939
Glory,
Это то что давал деббагер, я просто скопировал строчку

Это то, что вы сформировали. Именно вы и именно своим скриптом
7 окт 09, 11:58    [7752426]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить