FireBird ADO.NET Provider "не видит" хранимую процедуру
От: Galiyev  
Дата: 24.01.05 06:24
Оценка:
Здравствуйте,

экпериментирую с FireBird ADO.NET Provider

написал простенькую хранимую процедуру, возвращающую одно единственное значение:



CREATE PROCEDURE "stored_proc"
RETURNS (
"ReturnValue" VARCHAR(10))
AS
begin
/* Procedure Text */
"ReturnValue"='QQQQ';
suspend;
end


программа следующая:



fbConnection1.Open();
FbTransaction fbtr = fbConnection1.BeginTransaction();
FbCommand fbcommand = new FbCommand();
fbcommand.Connection = fbConnection1;
fbcommand.CommandType = CommandType.StoredProcedure;
fbcommand.CommandText ="stored_proc";
fbcommand.Transaction = fbtr;
fbcommand.Parameters.Add("ReturnValue",FbDbType.VarChar,10);
fbcommand.Parameters[0].Direction = ParameterDirection.Output;
fbcommand.ExecuteNonQuery();
MessageBox.Show(fbcommand.Parameters[0].Value.ToString());
fbtr.Commit();
fbcommand.Dispose();
fbConnection1.Close();


при запуске программы вылетает сообщение об ошибке



Additional information: Dynamic SQL Error
SQL error code = -204
Procedure unknown
STORED_PROC



В чём может быть причина?
Re: FireBird ADO.NET Provider "не видит" хранимую процедуру
От: MNZ Россия  
Дата: 24.01.05 07:02
Оценка:
Здравствуйте, Galiyev, Вы писали:

G>В чём может быть причина?


Вообще говоря, мануал гласит, что ExecuteNonQuery используется для выполнения DDL и прочих запросов, не возвращающих данные. Поскольку вы возвращаете данные из хранимой процедуры, лучше бы использовать Execute. На чистом SQL запрос выглядел бы как
SELECT * FROM STORED_PROC


Насчёт последней ошибки... вы уверены, что скомпилировали хранимую процедуру на сервере? Она, простите, существует?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: FireBird ADO.NET Provider "не видит" хранимую процедуру
От: Galiyev  
Дата: 24.01.05 08:16
Оценка:
Здравствуйте, Galiyev, Вы писали:

G>В чём может быть причина?



Сам же пишу ответ на этот пост.
Включил эскейп последоватльность в название процедуры:
fbcommand.CommandText ="\"stored_proc\"";
Re[2]: FireBird ADO.NET Provider "не видит" хранимую процеду
От: Romkin  
Дата: 24.01.05 08:20
Оценка:
Здравствуйте, Galiyev, Вы писали:

G>>экпериментирую с FireBird ADO.NET Provider


G>>написал простенькую хранимую процедуру, возвращающую одно единственное значение:


G>>CREATE PROCEDURE "stored_proc"

G>>RETURNS (
G>> "ReturnValue" VARCHAR(10))
G>>AS
G>>begin
G>> /* Procedure Text */
G>> "ReturnValue"='QQQQ';
G>> suspend;
G>>end

G>>Additional information: Dynamic SQL Error

G>>SQL error code = -204
G>>Procedure unknown
G>>STORED_PROC

G>>В чём может быть причина?


G>Сам же пишу ответ на этот пост.

G>Включил эскейп последоватльность в название процедуры:
G>fbcommand.CommandText ="\"stored_proc\"";

Это вообще на каком языке? Все правильно, ты создал имя case sensitive, поэтому и должен везде брать его в кавычки теперь. Лучше уж писать в верхнем регистре при создании и без кавычек. Тогда и чувствительности к регистру не будет
Re[3]: FireBird ADO.NET Provider "не видит" хранимую процеду
От: Galiyev  
Дата: 24.01.05 08:22
Оценка:
Здравствуйте, Romkin, Вы писали:


R>Это вообще на каком языке? Все правильно, ты создал имя case sensitive, поэтому и должен везде брать его в кавычки теперь. Лучше уж писать в верхнем регистре при создании и без кавычек. Тогда и чувствительности к регистру не будет


Каким образом отключить casesebsetive в FireBird?
Re[4]: FireBird ADO.NET Provider "не видит" хранимую процеду
От: Alex.Che  
Дата: 24.01.05 09:57
Оценка:
Привет, Galiyev!
Вы пишешь 24 января 2005:

R>> Это вообще на каком языке? Все правильно, ты создал имя case sensitive, поэтому и должен везде брать его в кавычки теперь.

R>> Лучше уж писать в верхнем регистре при создании и без кавычек. Тогда и чувствительности к регистру не будет

G> Каким образом отключить casesebsetive в FireBird?


Тебе ж говорят, при создании объектов, идентификаторы писать БОЛЬШИМИ БУКВАМИ.
Тогда кавычки, при последующем использовании, ненужны.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.