SQL Query отлично работает в студии управления, но не из ASP - PullRequest
2 голосов
/ 20 марта 2011

Я пытаюсь выполнить следующий запрос к базе данных MS SQL 2008 в тестовой программе ASP.Запрос отлично работает в «Server Management Studio», и я могу без проблем подключиться к базе данных из программы ASP.Однако, когда я собираю все это вместе, я получаю следующую ошибку:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/test.asp, line 59

Строка 59 соответствует последней строке в следующем фрагменте:

set c = Server.CreateObject("ADODB.connection")
c.Open "PROVIDER=sqloledb;SERVER=DESKTOP-VM-WIN7\SQLEXPRESS;DATABASE=ExamDB;UID=USERNAME;PWD=PASSWORD;"
set r = c.Execute("DECLARE @session_id uniqueidentifier; " &_
              "SET @session_id = 'BFAABD2A-4717-4619-8CF6-E20009B97E8F'; " &_
              "DECLARE @exam_id uniqueidentifier; " &_
              "SET @exam_id = (SELECT exam_id " &_
              "                FROM sessions " &_
              "                WHERE session_id = @session_id); " &_
              "CREATE TABLE #exam (concept_title nvarchar(50), " &_
              "                    concept_description xml, " &_
              "                    concept_questions xml); " &_
              "DECLARE @concept_id uniqueidentifier; " &_
              "DECLARE concept_cursor CURSOR FOR " &_
              "SELECT concept_id " &_
              "FROM exams " &_
              "WHERE exam_id = @exam_id; " &_
              "OPEN concept_cursor; " &_
              "FETCH NEXT FROM concept_cursor INTO @concept_id; " &_
              "WHILE @@FETCH_STATUS = 0 " &_
              "BEGIN " &_
              "    INSERT #exam " &_
              "    SELECT concepts.concept_title, " &_
              "           concepts.concept_description, " &_
              "           (SELECT questions.question_title, " &_
              "                   questions.question_description, " &_
              "                   questions.question_answer, " &_
              "                   questions.question_difficulty " &_
              "            FROM questions " &_
              "            INNER JOIN concepts " &_
              "            ON questions.question_id = concepts.question_id AND concepts.concept_id = @concept_id " &_
              "            ORDER BY concepts.question_order " &_
              "            FOR XML PATH('question'), ELEMENTS, TYPE) " &_
              "    FROM concepts " &_
              "    WHERE concepts.concept_id = @concept_id AND concept_title IS NOT NULL; " &_
              "    FETCH NEXT FROM concept_cursor INTO @concept_id; " &_
              "END; " &_
              "SELECT * FROM #exam " &_
              "FOR XML PATH('concept'), ELEMENTS, ROOT('exam'), TYPE; " &_
              "CLOSE concept_cursor; " &_
              "DEALLOCATE concept_cursor; " &_
              "DROP TABLE #exam; ")
Response.Write(r(0))

Что-то явно не так??Кроме того, есть ли хороший подход для устранения проблем такого рода?Спасибо!

1 Ответ

1 голос
/ 20 марта 2011

Обычно вы получаете эту ошибку, когда имя поля написано с ошибкой. Дважды проверьте ваш SQL.

Если вы абсолютно уверены , что ваш SQL верен, посмотрите, поможет ли SET NOCHECK ON.

Пожалуйста, учитывайте советы в комментариях и делайте это с помощью хранимых процедур. Избегайте бремени боли.

...