Ошибка SQL Server 2008: неверный синтаксис рядом с символом, которого нет в моем утверждении - PullRequest
0 голосов
/ 14 мая 2011

Используя vbscript для обработки формы в классическом ASP, я создаю следующий оператор вставки:

INSERT INTO [RemitChangeControl].[dbo].[FormData]
VALUES
(142, 2, 'asdfasdf');

Я получаю эту ошибку:

Microsoft SQL Server Native Client 10.0 error '80040e14'

Incorrect syntax near '<'. 

Это странно, потому что в моем операторе вставки нет символа '<'. Так как же может быть ошибка рядом с несуществующим символом?

Как ни странно, если я создаю тот же оператор, включив его непосредственно в мой код в виде литеральной строки, он работает правильно.

Ответы [ 2 ]

2 голосов
/ 14 мая 2011

Вот краткое руководство по настройке трассировки с использованием SQL Server Management Studio и Profiler:

http://www.petri.co.il/monitoring-with-sql-profiler.htm

1 голос
/ 14 мая 2011

Код, который я использовал для отладки другой проблемы, вызвал мою проблему.В частности, я неправильно понял семантику передачи и назначения параметров VBScript.

Вот код, который выполняет оператор вставки:

insert_statement = INSERT INTO [RemitChangeControl].[dbo].[FormData]" & vbcrlf _
    & "VALUES " & vbcrlf _
    & join(value_clauses.Items, "," & vbcrlf) & ";"

write_to_web_page insert_statement ' OOPS!
objconn.Execute insert_statement

Вот функция, которую он вызывал:

sub write_to_web_page(s)
    ' assigment to s mutates it!
    s = Replace(Server.HTMLEncode(s), vbcrlf, "<br />")
    response.write("<p>" & t & "</p>")
end sub 

Когда я передаю insert_statement на write_to_web_page, это передается по ссылке.Когда я переназначаю результат Replace в локальную переменную, он изменяется в вызывающей программе, в результате чего insert_statment содержит число "<br />".Это то, что я получаю за ожидание семантики присваивания Python в VBScript.

Я, наконец, понял это, урезая свой код до нужного размера, чтобы конкретизировать мой вопрос здесь.Удивительно, но мой маленький пример не показал ошибку.Затем я вставил вызовы на write_to_web_page, чтобы выяснить, что происходит.Потом моя ошибка снова появилась, и лампочка загорелась.

...