Главная страница
    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.86 MB
Время: 0.103 c
1-1101395047
denis24
2004-11-25 18:04
2004.12.12
Qrreport-html


3-1100072734
sanek
2004-11-10 10:45
2004.12.12
как на грид добавить поле из другой таблици


14-1101157384
OneFragLeft
2004-11-23 00:03
2004.12.12
Компьютер и Здоровье.


3-1099469147
Sergy Ivanec
2004-11-03 11:05
2004.12.12
Interbase, проблема с большим числом записей


9-1091894388
new developer
2004-08-07 19:59
2004.12.12
массив в массиве





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский