powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу исполнить процедуру
11 сообщений из 11, страница 1 из 1
Не могу исполнить процедуру
    #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
Не могу исполнить процедуру
    #32848831
Alex Antonoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык падает то она у вас на команде, которая закрыта окошком с исключением ...
...
Рейтинг: 0 / 0
Не могу исполнить процедуру
    #32848836
MySQLdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex AntonoffНу дык падает то она у вас на команде, которая закрыта окошком с исключением ...

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

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

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


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

Дополнительно выполните команду DBCC CHECKDB
...
Рейтинг: 0 / 0
Не могу исполнить процедуру
    #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
Не могу исполнить процедуру
    #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
Не могу исполнить процедуру
    #32849060
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что насчет выполнения в qa?
...
Рейтинг: 0 / 0
Не могу исполнить процедуру
    #32849216
MySQLdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичТак что насчет выполнения в qa?

Выполняется
...
Рейтинг: 0 / 0
Не могу исполнить процедуру
    #32849250
Alex Antonoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще то странная ошибка, еще и написана по русски, сикуль сам не кидает ошибки на русском, и если у вас выполняется запрос, скорее всего это означает, что проблема не в сервере, а на вашей машине. У вас русская винда ? Какой версии MDAC ? Попробуйте запустить свою программу на другой машине.
...
Рейтинг: 0 / 0
Не могу исполнить процедуру
    #32849256
Alex Antonoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, вот ваша проблема. Рекомендуется поставить на сервер sp3a. Дополнителную информацию можно посмотреть здесь
...
Рейтинг: 0 / 0
Не могу исполнить процедуру
    #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
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу исполнить процедуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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