Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизА с расширенными ХП под MSSQLServer никто не работал? Найти похожие ветки
← →
Layner © (2004-11-12 09:06) [0]Создал ХП (код ниже), должна возвращать выборку. Пока просто безошибочно выполняется, и то хорошо. Но и выборку не возвращает. Требуется помощь с возвратом из ХП выборки :(
Т.е. код с 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.
← →
Layner © (2004-11-12 09:09) [1]Копируем DLL в "c:\Program Files\Microsoft SQL Server\80\Tools\Binn"
sp_addextendedproc "tov", "torg1211.dll"
- регистрация в MSSQL.
Запускаемexec tov;
.
В результате в QA - The command(s) completed successfully.
← →
ЮЮ © (2004-11-12 09:41) [2]Вот расширил, так расширил. SELECT * FROM Test.dbo.table1
Возможностей SP и UDF явно не хватает для работы с TADOQuery :)
← →
Ega23 © (2004-11-12 09:42) [3]А что у нас метод ExecSQL делает, а?
← →
Ega23 © (2004-11-12 09:43) [4]Тебе на Select вместо ExecSQL Open делать надо
← →
Nikolay M. © (2004-11-12 09:52) [5]
> procedure tov; stdcall; cdecl; export;
Это как так???
← →
ЮЮ © (2004-11-12 09:54) [6]И что, серьезно TADOQuery.Open вернет dataset, идентичный серверному? Илм сервер поймет, что за шнягу ему вернули, и вернет свой dataset?
← →
Ega23 © (2004-11-12 10:38) [7]И что, серьезно TADOQuery.Open вернет dataset, идентичный серверному? Илм сервер поймет, что за шнягу ему вернули, и вернет свой dataset?
Вот этого я не знаю. Но судя по сабжу, если у автора Insert, Delete и Update проходит, а Select - нет, то вывод сам собой напрашивается... Поди какой-нить Error creating cursor handle должен вылетать... Хотя нет, это в обратном случае.
← →
ЮЮ © (2004-11-12 11:51) [8]Тут есть Мастера, кто работает с сервером на таком "низком" уровне, а то лично у меня опыта нет, чтобы критиковать, только и могу, что усомниться
← →
NataliK © (2004-11-12 14:20) [9]Ega23 © [7]
Насчет Error creating cursor handle
Не могу почему эта ошибка возникает?
Если не трудно конечно же?
← →
Ega23 © (2004-11-12 14:29) [10]NataliK © (12.11.04 14:20) [9]
Она возникает, если ты пытаешься получить набор данных такой командой, которая не предусматривает этого. Например, команда Select возвращает набор данных (может быть пустой). А команда Insert - нет. Метод Open - для набора данных, метод ExecSQL - нет.
← →
NataliK © (2004-11-12 14:35) [11]т.е я все же могу сделать select и тут же кинуть результат во временную таблицу (Into Temp)?
← →
Ega23 © (2004-11-12 14:41) [12]1. Если возвращаемым результатом твоей транзакции является набор данных, то тебе нужно пользоваться методом TDataSet.Open. В противном случае - TDataSet.ExecSQL.
2. Конструкция Select into #temp_table не вернёт набора данных
← →
vuk © (2004-11-12 14:43) [13]Мда, оригинальный подход к созданию расширенных хранимых
процедур. По поводу того, насколько это надо уже написали.
Но если уж очень надо именно расширенные процедуры, то качать ODS API отсюда http://www.overbyte.be (раздел more) или отсюда ftp://delphi-jedi.org/api/SqlOds.zip и читать MSDN.
← →
NataliK © (2004-11-12 14:46) [14]Благодарю!
Тогда следующий вопрос почему стандартный SQL Editor проглатывает запрос, а Дельфи плюется курсорами
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.049 c