Главная страница
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.024 c
3-1100074594
Serguar
2004-11-10 11:16
2004.12.12
Медленное открытие таблицы Paradox


1-1101405558
Gero
2004-11-25 20:59
2004.12.12
Прокрутка в консоли


14-1100999523
olookin
2004-11-21 04:12
2004.12.12
Когда в Вашем городе начинает ходить общ. транспорт?


1-1101371135
Инког
2004-11-25 11:25
2004.12.12
treeview


14-1100806076
Игорь Шевченко
2004-11-18 22:27
2004.12.12
Перечитывая Таненбаума (задачка)