Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу исполнить процедуру / 11 сообщений из 11, страница 1 из 1
28.12.2004, 14:43
    #32847906
MySQLdb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
У меня MSSQLSRV 2000 Develop, лежит в базе такая вот процедурка

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
-- =============================================

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

-- Процедура имеет один входной параметр, наименование класса документации.

-- Возвращаемый набор данных содержит наименование всех тематик,
-- обозначенных  в данном класе. Тематика используется как ключевая информация.

-- Данные извлекаются из таблицы TBL_DOCUMENT, используя связи по ключевым полям.
-- Основной набор данных формируется из поля TBL_DOCUMENT.DOC_THEMES, в последствии
-- данная информация используется как ключевая. 

-- =============================================

-- Создание хранимой процедуры

IF EXISTS (SELECT name 
	   FROM   sysobjects 
	   WHERE  name = N'SELECT_TBL_DOCUMENT_DOC_THEMES' 
	   AND 	  type = 'P')
    DROP PROCEDURE SELECT_TBL_DOCUMENT_DOC_THEMES
GO

CREATE PROCEDURE SELECT_TBL_DOCUMENT_DOC_THEMES 
      
      @pCLASS_NAME nvarchar( 255 )

AS

SELECT   TBL_DOCUMENT.DOC_THEMES /* AS 'Тематика' */ FROM TBL_CLASS, TBL_TYPE, TBL_DOCUMENT
WHERE       ( TBL_CLASS.CLASS_NAME = @pCLASS_NAME ) 
      AND   ( TBL_TYPE.CLASS_NAME = TBL_CLASS.CLASS_NAME )
      AND   ( TBL_DOCUMENT.TYPE_ID = TBL_TYPE.TYPE_ID )

GROUP BY  TBL_DOCUMENT.DOC_THEMES
ORDER BY  TBL_DOCUMENT.DOC_THEMES ASC

GO

-- =============================================
-- example to execute the store procedure
-- =============================================

EXECUTE SELECT_TBL_DOCUMENT_DOC_THEMES @pCLASS_NAME = 'УММ СППР' 

GO


Есть компоненет, AdoStoredProc, в нем создаю параметр

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
const AnsiString sp_n2               = "SELECT_TBL_DOCUMENT_DOC_THEMES";
const WideString sp_n2_pn1           = "@pCLASS_NAME";
const TFieldType sp_n2_pft1          = ftString;
const TParameterDirection  sp_n2_pd1 =  pdInput;
const int  sp_n2_ps1                 =   255 ;

OleVariant pValue1,pValue2,pValue3;//Значение параметра


 //Настраиваем хранимую процедуру
     locADOStoredProc->ProcedureName = sp_n2;
     locADOStoredProc->Prepared = true;
     locADOStoredProc->Parameters->Clear();
     locADOStoredProc->Parameters->Refresh();

     //Создаем параметр для храниммой процедуры
     pValue1 = pValue1.ChangeType(varString);
     pValue1 = "";
     locADOStoredProc->Parameters->CreateParameter(sp_n2_pn1,sp_n2_pft1,sp_n2_pd1,sp_n2_ps1, pValue1);

            //В переменной gNT находится тип узла, в данном случае это TLNodeTypeCLASS
            //В переменной gND находится ключевая информация, в данном случае это наименование класса документации
            //Используем его в качестве значения параметра хранимой процедуры

            //locADOStoredProc->Parameters->ParamByName("@pCLASS_NAME")->Value = gND; //Передали наименование класса документации
            locADOStoredProc->Parameters->ParamValues["@pCLASS_NAME"] = gND; //Передали наименование класса документации

            //Выполняем процедуру
            locADOStoredProc->Open();

и как только собираюсь ее исполнить, в сторке

Код: plaintext
 locADOStoredProc->Open();

вылетает такая вот ошибка, показана на кртинке,
что она значит не могу понять. Объясните плиз, или дайте примерчик
но процедурку через ADO Stored Proc компонент.

Заранее благодарю






-----------------------------------------------------------
С уважением,MySQLdb
...
Рейтинг: 0 / 0
29.12.2004, 08:38
    #32848831
Alex Antonoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Ну дык падает то она у вас на команде, которая закрыта окошком с исключением ...
...
Рейтинг: 0 / 0
29.12.2004, 08:48
    #32848836
MySQLdb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Alex AntonoffНу дык падает то она у вас на команде, которая закрыта окошком с исключением ...

это строка следующая, которую указал ранее

Код: plaintext
1.
2.
            //Выполняем процедуру
            locADOStoredProc->Open();

именно на ней возникает исключение.


-----------------------------------------------------------
С уважением,MySQLdb
...
Рейтинг: 0 / 0
29.12.2004, 09:14
    #32848867
Alex Antonoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
1. Запустите профайлер и посмотрите, уходит ли запрос на сервер и правильно ли он сформирован
2. Скопируйте ваш запрос из профайлера и попробуйте выполнить в Query Analyzer, будут ли ошибки

Дополнительно выполните команду DBCC CHECKDB
...
Рейтинг: 0 / 0
29.12.2004, 09:35
    #32848897
MySQLdb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Alex Antonoff1. Запустите профайлер и посмотрите, уходит ли запрос на сервер и правильно ли он сформирован
2. Скопируйте ваш запрос из профайлера и попробуйте выполнить в Query Analyzer, будут ли ошибки

Дополнительно выполните команду DBCC CHECKDB


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
DBCC results for 'UMM'.
DBCC results for 'sysobjects'.
There are  68  rows in  2  pages for object 'sysobjects'.
DBCC results for 'sysindexes'.
There are  63  rows in  3  pages for object 'sysindexes'.
DBCC results for 'syscolumns'.
There are  387  rows in  8  pages for object 'syscolumns'.
DBCC results for 'systypes'.
There are  26  rows in  1  pages for object 'systypes'.
DBCC results for 'syscomments'.
There are  133  rows in  17  pages for object 'syscomments'.
DBCC results for 'sysfiles1'.
There are  2  rows in  1  pages for object 'sysfiles1'.
DBCC results for 'syspermissions'.
There are  65  rows in  1  pages for object 'syspermissions'.
DBCC results for 'sysusers'.
There are  18  rows in  1  pages for object 'sysusers'.
DBCC results for 'sysproperties'.
There are  126  rows in  1  pages for object 'sysproperties'.
DBCC results for 'sysdepends'.
There are  315  rows in  2  pages for object 'sysdepends'.
DBCC results for 'sysreferences'.
There are  2  rows in  1  pages for object 'sysreferences'.
DBCC results for 'sysfulltextcatalogs'.
There are  0  rows in  0  pages for object 'sysfulltextcatalogs'.
DBCC results for 'sysfulltextnotify'.
There are  0  rows in  0  pages for object 'sysfulltextnotify'.
DBCC results for 'sysfilegroups'.
There are  1  rows in  1  pages for object 'sysfilegroups'.
DBCC results for 'TBL_CLASS'.
There are  3  rows in  1  pages for object 'TBL_CLASS'.
DBCC results for 'TBL_TYPE'.
There are  10  rows in  1  pages for object 'TBL_TYPE'.
DBCC results for 'TBL_DOCUMENT'.
There are  137  rows in  7  pages for object 'TBL_DOCUMENT'.
DBCC results for 'dtproperties'.
There are  7  rows in  1  pages for object 'dtproperties'.
CHECKDB found  0  allocation errors and  0  consistency errors in database 'UMM'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
...
Рейтинг: 0 / 0
29.12.2004, 10:16
    #32848995
MySQLdb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Alex Antonoff1. Запустите профайлер и посмотрите, уходит ли запрос на сервер и правильно ли он сформирован
2. Скопируйте ваш запрос из профайлера и попробуйте выполнить в Query Analyzer, будут ли ошибки

Дополнительно выполните команду DBCC CHECKDB

и еще какая то странность всплыла, когда ставиш свойство
Prepare = false, что-то исполняется, в профайлере появляется

declare @P1 int
set @P1=0
declare @P2 int
set @P2=561160
declare @P3 int
set @P3=98305
declare @P4 int
set @P4=0
exec sp_cursoropen @P1 output, N' EXEC SELECT_TBL_DOCUMENT_DOC_THEMES @P1 ', @P2 output, @P3 output, @P4 output, N'@P1 varchar(255)', 'УММ СУМО'
select @P1, @P2, @P3, @P4

EXEC SELECT_TBL_DOCUMENT_DOC_THEMES @P1



хотя параметр объявлен как nvarchar(255)


а когда ставиш Prepare=true,
там всплывает строка

exec [UMM]..sp_procedure_params_rowset N'SELECT_TBL_DOCUMENT_DOC_THEMES', 1, NULL, NULL

и все валится намертво

может в этом причина, или это только пальцем в небо, и не чего не значит???
...
Рейтинг: 0 / 0
29.12.2004, 10:42
    #32849060
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Так что насчет выполнения в qa?
...
Рейтинг: 0 / 0
29.12.2004, 11:36
    #32849216
MySQLdb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Гавриленко Сергей АлексеевичТак что насчет выполнения в qa?

Выполняется
...
Рейтинг: 0 / 0
29.12.2004, 11:51
    #32849250
Alex Antonoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Вообще то странная ошибка, еще и написана по русски, сикуль сам не кидает ошибки на русском, и если у вас выполняется запрос, скорее всего это означает, что проблема не в сервере, а на вашей машине. У вас русская винда ? Какой версии MDAC ? Попробуйте запустить свою программу на другой машине.
...
Рейтинг: 0 / 0
29.12.2004, 11:53
    #32849256
Alex Antonoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Кстати, вот ваша проблема. Рекомендуется поставить на сервер sp3a. Дополнителную информацию можно посмотреть здесь
...
Рейтинг: 0 / 0
29.12.2004, 14:42
    #32849816
MySQLdb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу исполнить процедуру
Alex AntonoffКстати, вот ваша проблема. Рекомендуется поставить на сервер sp3a. Дополнителную информацию можно посмотреть здесь

Пропатчить бы надо, но у меня слишком мало трафика, 100 МВ лимит,
попрошу админа, что бы он мне слил, а то сам не осилю.

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

Поступил следующим образом:

1) Prepared -> false
2) Создаю параметр через CreateParametr, с неопределенным значением, для
Olevariant
3) Через Paramvalues по имени устанавливаю значение и делаю Open

Вроде не валится, посмотрел в трейсер, там в такой комбинации появляются
такие записи

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @P1 int
set @P1=NULL
declare @P2 int
set @P2= 561160 
declare @P3 int
set @P3= 98305 
declare @P4 int
set @P4=NULL
declare @P5 int
set @P5=NULL
exec sp_cursoropen @P1 output, N' EXEC @P1=SELECT_TBL_DOCUMENT_DOC_THEMES @P2  ', @P2 output, @P3 output, @P4 output, N'@P1 int OUTPUT,@P2 nvarchar(255)', @P5 output, N'УММ СППО'
select @P1, @P2, @P3, @P4, @P5

EXEC @P1=SELECT_TBL_DOCUMENT_DOC_THEMES @P2  


Посмотрим, если возникнут опять проблемы, постораюсь пропатчить.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу исполнить процедуру / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]