Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MSSQL, erweiterte gespeicherte Prozedur erstellen? (https://www.delphipraxis.net/84476-mssql-erweiterte-gespeicherte-prozedur-erstellen.html)

eufelchen 17. Jan 2007 13:25

Datenbank: MSSQL • Version: 2000 • Zugriff über: ado und odbc

MSSQL, erweiterte gespeicherte Prozedur erstellen?
 
Hallo,

ich möchte eine "einfache" erweiterte gespeicherte Prozedur erstellen.

In der Hilfe habe ich gefunden das man Funktionen aus der DLL "Opends60.DLL" benötigt.
Als Übersetzung der c-headder ("SRV.H") habe ich die von:
Delphi-Quellcode:
Unit MsOdsApi;
{
  - Master Cluster's Library -

  Copyright © 1996-2004 Leonid Belousov (aka Master Cluster)
  mailto: [email]mc@bramc.ru[/email]
  [url]www.MasterCluster.com[/url]

  - Description: translation of C-headers of Microsoft Open Data Services API
}
[...]
genommen.

mein Quellcode sieht z.Z. so aus
Delphi-Quellcode:
library MeldeAenderung;
uses
   Windows,
   MsOdsApi in 'MsOdsApi.pas';

{$R *.res}

function __GetXpVersion: ULONG; cdecl;
begin
   result := ODS_VERSION;
end;

function xp_MeldeAenderung(pSrvProc: SRV_PROC): Integer; cdecl;
begin
   Windows.Beep(200,200);
   result := 1;
end;

exports
   __GetXpVersion, xp_MeldeAenderung;

begin
   Windows.Beep(400,200);
end.
Die Dll wird auch brav erstellt *freu schon*

Die Dll in das Verzeichnis: "Microsoft SQL Server\80\Tools\Binn" kopiert, und im "SQL Query Analyzer"
Zitat:

use master
go
sp_addextendedproc 'xp_MeldeAenderung', 'MeldeAenderung.dll'
go
sp_helpextendedproc 'xp_MeldeAenderung'
go
exec xp_MeldeAenderung -- Hier krachts :-(
go
sp_dropextendedproc 'xp_MeldeAenderung'
go
ausgeführt:
Zitat:

name dll
---------------------- -----------------------
xp_MeldeAenderung MeldeAenderung.dll

ODBC: Nachr.-Nr. 0, Schweregrad 16, Status 1
Die DLL MeldeAenderung.dll oder eine DLL, auf die sie verweist, kann nicht geladen werden. Ursache: 126(Das angegebene Modul wurde nicht gefunden.).
Auch wenn ich nur
Delphi-Quellcode:
type
   SRV_SERVER = Pointer;
   SRV_CONFIG = Pointer;
   SRV_PROC  = Pointer;
const
   SS_MAJOR_VERSION  = 7;
   SS_MINOR_VERSION  = 00;
   SS_LEVEL_VERSION  = 0000;
   SS_MINIMUM_VERSION = '7.00.00.0000';
   ODS_VERSION        = ((SS_MAJOR_VERSION shl 24) or (SS_MINOR_VERSION shl 16));
verwende (aus "srv.h" "übersetzt") und alle verweise auf die "Opends60" entferne bekomme ich die gleiche Meldung :-(

Hat da einer einen Tipp für mich, was da schief läuft?

grübelnd
T. Meuser

f.siebler 17. Jan 2007 14:16

Re: MSSQL, erweiterte gespeicherte Prozedur erstellen?
 
eine lösung habe ich auch nicht, aber mach es dir einfacher, erstelle eine sp oder einen trigger, und rufe damit xp_cmd oder wie das ding heißt auf, damit kannst du externe anwendungen starten... macht weniger arbeit...
aber wie gesagt nur so ne idee. :-)

NormanNG 17. Jan 2007 14:20

Re: MSSQL, erweiterte gespeicherte Prozedur erstellen?
 
Hi,

versuch doch mal so
Delphi-Quellcode:
function xp_MeldeAenderung(pSrvProc: SRV_PROC): Integer; cdecl;
begin
   Windows.Beep(200,200);
   result := 0;         <----  0=NoError 1=Error
end;

shmia 17. Jan 2007 14:35

Re: MSSQL, erweiterte gespeicherte Prozedur erstellen?
 
Versuch mal:
http://www.berenddeboer.net/delphi/index.html

eufelchen 18. Jan 2007 06:44

Re: MSSQL, erweiterte gespeicherte Prozedur erstellen?
 
Erstmal:
Danke für die Antworten und guten Morgen

@f.siebler
Kann man mit einer (einfachen) gespeicherten Prozedur asynchron Aktionen ausführen?
Also z.B. xp_cmd benutzen und NICHT auf die Beendigung warten?

Es soll nämlich ein Event (mit Daten) in einer anderen Anwendung auslösen, aber die Datenbank auf keinen Fall (nur um das Nötigste) bremsen.
[edit]
Frage noch offen aus Neugierde noch offen, Problem gelöst
[/edit]

@NormanNG
Probiere ich gleich mal aus
[edit]
Stimmt ok = 0 error <> 0
aber darren lag se nicht
[/Edit]

@shmia
Sieht interessant aus,
aber es scheint mir mit (unnötigem) overhead verbunden zu sein :-(
[edit]
Auf der Seite ist eine Anleitung wie man die dll Installieren kann, die hat geholfen :-)
Die DB wusste einfach nicht wo die dll lag, mit kompletter Pfadangabe geht es.
[/edit]

MfG
T. Meuser


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz