Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

А с расширенными ХП под MSSQLServer никто не работал?


Layner ©   (2004-11-12 09:06:00) 

Создал ХП (код ниже), должна возвращать выборку. Пока просто безошибочно выполняется, и то хорошо. Но и выборку не возвращает. Требуется помощь с возвратом из ХП выборки :(
Т.е. код с UPDATE, DELETE выполняется, а с SELECT делает... но хотелось бы в QA посмотреть результат, в данном случае, обычной таблицы table1.


library torg1211;

uses
 SysUtils,
 Classes,
 ADODB;

{$R *.res}

procedure tov; stdcall; cdecl; export;
var
 qtemp: TADOQuery;
 conn: TADOConnection;
begin
conn := TADOConnection.Create(nil);
conn.KeepConnection:=False;
conn.LoginPrompt:=False;
conn.ConnectionString:='FILE NAME='+ExtractFileDir(ParamStr(0))+'\link.udl';
conn.Connected:=True;

qtemp := TADOQuery.Create(nil);
try
 try
  with qtemp do begin
   Connection := conn;
   Close;
   SQL.Clear;
   SQL.Add('SELECT * FROM Test.dbo.table1');
   Prepared;
   ExecSQL;
  end;
 finally
 qtemp.Free;
end;

except

end;
end;

exports tov;

begin
end.


NataliK   (2004-11-12 14:46:00) [1]

Благодарю!
Тогда следующий вопрос почему  стандартный SQL Editor   проглатывает запрос, а Дельфи  плюется курсорами


vuk   (2004-11-12 14:43:00) [2]

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

Но если уж очень надо именно расширенные процедуры, то качать ODS API отсюда http://www.overbyte.be(раздел more) или отсюда ftp://delphi-jedi.org/api/SqlOds.zipи читать MSDN.


Ega23   (2004-11-12 14:41:00) [3]

1. Если возвращаемым результатом твоей транзакции является набор данных, то тебе нужно пользоваться методом TDataSet.Open. В противном случае - TDataSet.ExecSQL.

2. Конструкция Select into #temp_table не вернёт набора данных


NataliK   (2004-11-12 14:35:00) [4]

т.е я все же могу сделать select и тут же кинуть результат во временную таблицу (Into Temp)?


Ega23   (2004-11-12 14:29:00) [5]

NataliK ©   (12.11.04 14:20) [9]

Она возникает, если ты пытаешься получить набор данных такой командой, которая не предусматривает этого. Например, команда Select возвращает набор данных (может быть пустой). А команда Insert - нет. Метод Open - для набора данных, метод ExecSQL - нет.


NataliK   (2004-11-12 14:20:00) [6]

Ega23 ©   [7]
Насчет Error creating cursor handle
Не могу   почему эта ошибка возникает?
Если не трудно конечно же?


ЮЮ   (2004-11-12 11:51:00) [7]

Тут есть Мастера, кто работает с сервером на таком "низком" уровне, а то лично у меня опыта нет, чтобы критиковать, только и могу, что усомниться


Ega23   (2004-11-12 10:38:00) [8]

И что, серьезно TADOQuery.Open вернет dataset, идентичный серверному? Илм сервер поймет, что за шнягу ему вернули, и вернет свой dataset?

Вот этого я не знаю. Но судя по сабжу, если у автора Insert, Delete и Update проходит, а Select - нет, то вывод сам собой напрашивается... Поди какой-нить Error creating cursor handle должен вылетать... Хотя нет, это в обратном случае.


ЮЮ   (2004-11-12 09:54:00) [9]

И что, серьезно TADOQuery.Open вернет dataset, идентичный серверному? Илм сервер поймет, что за шнягу ему вернули, и вернет свой dataset?


Nikolay M.   (2004-11-12 09:52:00) [10]


> procedure tov; stdcall; cdecl;export;

Это как так???


Ega23   (2004-11-12 09:43:00) [11]

Тебе на Select вместо ExecSQL Open делать надо


Ega23   (2004-11-12 09:42:00) [12]

А что у нас метод ExecSQL делает, а?


ЮЮ   (2004-11-12 09:41:00) [13]

Вот расширил, так расширил. SELECT * FROM Test.dbo.table1
Возможностей SP и UDF явно не хватает для работы с TADOQuery :)


Layner   (2004-11-12 09:09:00) [14]

Копируем DLL в "c:\Program Files\Microsoft SQL Server\80\Tools\Binn"

sp_addextendedproc 'tov', 'torg1211.dll'- регистрация в MSSQL.

Запускаем exec tov;.

В результате в QA - The command(s) completed successfully.


Наверх

Титульная страница Поиск, карта сайта Написать письмо