Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

А с расширенными ХП под 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.033 c
6-1096694442
PD
2004-10-02 09:20
2004.12.12
PHP и Делфи


3-1100265294
Newbie_In_DB
2004-11-12 16:14
2004.12.12
Загрузка значений в DBCombobox


1-1101084247
Кто---то
2004-11-22 03:44
2004.12.12
Почему не срабатывает OnClick, когда кликаем по заголовку столбца


1-1101887251
Майя
2004-12-01 10:47
2004.12.12
Закрытие OLe объекта


1-1101886141
markers
2004-12-01 10:29
2004.12.12
База данных