![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А с расширенными ХП под 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.