Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.034 c
14-1101322505
Style
2004-11-24 21:55
2004.12.12
Пользователи БиЛайна, зацените идею.


4-1098688328
VZup
2004-10-25 11:12
2004.12.12
SetWindowText - не отправляется в Edit


14-1101284415
Ricko
2004-11-24 11:20
2004.12.12
"На самом деле"


6-1096627357
Вован
2004-10-01 14:42
2004.12.12
Имена сетевых компов


3-1100515146
denis24
2004-11-15 13:39
2004.12.12
dbimage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский