-
Вот последний копипаст из редактора кода
with TADOCommand.Create(Self) do
try
Connection := ADOConnection;
if not ADOConnection.Connected then ADOConnection.Connected := True; CommandType := cmdStoredProc;
CommandText := Format('%s.dbo.GET_ACCOUNT_SALDO;1',[fDB]);
//CommandText := Format('%s.dbo.GET_ACCOUNT_SALDO',[fDB]);
Log('CommandText = ',CommandText);
Parameters.Refresh;
Log('ParamCount = ',IntToStr(ParamCount));
for i := 0 to Pred(ParamCount) do Log(Parameters.Items[i].Name);
и в логе круглый ноль.
-
> А вот эта не работает из под делфийского адо.
"эта" это собственно какая?
> И ни вы, ни я не знаете почему.
да где нам.
Log('ParamCount = ',IntToStr(ParamCount));
это что за переменная? к чему относится?
-
GRAND ©
ну так как, честь ADO восстановлена? ;)
кто глючит то на самом деле? ;)))
-
это что за переменная? к чему относится?
Относится к верхнему with
Log('Parameters.Count = ',IntToStr(Parameters.Count));
Log('ParamCount = ',IntToStr(ParamCount));
В логе:
10.11.2008 17:10:28 Parameters.Count = 0
10.11.2008 17:10:28 ParamCount = 0
-
> Относится к верхнему with
ну так нет там такой, у верхнего with, берется системная.
> В логе:
> 10.11.2008 17:10:28 Parameters.Count = 0
сказок не рассказывай... так я тебе и поверил после [20] (хотя и до этого не очень то...).
-
ты сам поменьше сказок рассказывай.
приведен код как есть и приведен лог как есть.
Parameters.Count нулевой
-
> Parameters.Count нулевой
значит в твоей процедуре ПАРАМЕТРОВ НЕТ, даже @RETURN_VALUE, что както уже загадочно...
-
А рефреш что с ;1 что без нее возвращает false
-
значит в твоей процедуре ПАРАМЕТРОВ НЕТ, даже @RETURN_VALUE, что както уже загадочно...
Ага. А асп.нет приложение с SqlCommand читает их из космоса.
-
И еще вдобавок при execute злобные марсиане мне в лог вставляют: expects parameter '@p_cnt_num', which was not supplied
-
В общем слушайте опытные дивелоперы (у которых все и всегда и везде работает) и пополняйте свой небогатый жизненный опыт.
Я в начале говорил, что процедура моя самая обычная, но находится в разноименных бд на разных серверах.
А само приложение коннектится всегда к своей служебной БД и у него всегда есть гранты на объекты второй бд, которая везде по разному зовется.
Так вот.
Рефреш говорит правду только если хранимка находится в текущей базе, а если имя ей дать dbname.dbo.procedurename и сделать рефрешь, то получается тот самый эффект, который меня и всех вас поставил в тупик.
делюсь бесплатно. потому как я сегодня добрый.
ЗЫ тока не надо щас задним числом говорить, что вы это и так знали.
-
> ЗЫ тока не надо щас задним числом говорить, что вы это и так знали.
не знали конечно, ты же не дал этой инфы "задним числом".
то что ты сказал, это
> БД на разных серверах по разному называется
т.е. это понятно (имхо) - работаешь с одним сервером коннектишся к базе с одним именем, с другим к с другим.
а то что у тебя, из коннекта к одной базе вызывается процедура из другой, а в этой этой процедуры совсем нет... не говорил такого.
можно было бы по [20] догадаться, так сказать протелепатировать зачем ты там форматом в имя базы значение какой то переменной вставляешь... но извини, я как ParamCount увидел так офигел и больше не думал на эту тему.
но это кстати не объясняет почему создание этих параметров у тебя не работает.
-
> ты же не дал этой инфы "задним числом".
и даже больше того, ты это скрывал, и фальсифицировал пример
> CommandText := 'my_procedure';
где здесь 'xxx.xxx.my_procedure';??? показано как к родной.
-
Про разные базы было в самом вопросе.
Кроме того в 20 посте было
CommandText := Format('%s.dbo.GET_ACCOUNT_SALDO',[fDB]);
-
в общем ладно, проехали.
меня щас больше интересует как выйти из положения малой кровью.
базы, которые названы по разному это объективная реальность и наследие прошлого. от этого уже никуда не деться.
собственно есть выбор из трех альтернатив:
1. перетащить все объекты дефолтной бд в те разноименные экземпляры
2. использовать еще один коннект в приложении.
3. перенести процедуры в дефолтную бд и использовать там динамический sql (вообще не прикалывает такая перспектива)
-
> Кроме того в 20 посте было
и там же было ParamCount, про что в [31] писал.
> собственно есть выбор из трех альтернатив:
4х
> [31] но это кстати не объясняет почему создание этих параметров у тебя не работает.
самостоятельное создание параметров тоже должно работать, всего то убрать из "неправильного" кода в [0] глюки (раз уж "правильный" не подходит) и все.