Avatar billede kovalt Nybegynder
15. juli 2004 - 09:21 Der er 14 kommentarer og
1 løsning

Kalde stored procedure

Hej

  Hvordan kalder man en stored procedure fra ASP?

Kovalt
Avatar billede hiks Nybegynder
15. juli 2004 - 09:56 #1
hej

det gør du på samme måde som med dine normale Select-statements...

eksempelvis:

SQL = "EXECUTE din_stored_procedure parameter;"
SET rs = dinConnection.Execute(SQL)

/hiks
Avatar billede barkov Nybegynder
15. juli 2004 - 12:49 #2
Hiks svar er helt korrekt, men det afhænger af hvad din stored procedure har som output. Hiks svar virker kun vis din Stored Procedure aflevere et recordset. Hvis den aflevere en værdi som sand eller falsk eller et id på en forespørgsel, så skal den kaldes på en anden måde, men du må jo vende retur hvis dette er tilfældet :)
Avatar billede kovalt Nybegynder
15. juli 2004 - 13:07 #3
Det er ikke mig som har lavet SP derfor er jeg lidt i tvivl om hvordan det funger. Jeg har noget dokumentation, hvor der bliver listet en lang række af input som man kan sende med ind i SP. Hvad skriver jeg hvis jeg vil springe nogle inputs over?

Det er et recordset den returnerer....

Kan jeg skrive sådan her også:

SQL = "EXECUTE din_stored_procedure parameter;"
objRec.open strSQL, objConn
Avatar billede hiks Nybegynder
15. juli 2004 - 13:22 #4
det kommer meget an på hvordan den SP er kodet og om du må undlade at sende parametre ned i SP'en....

hvis du har i din sp at der evt. er lavet således

@parameter1 int = Null

så kan du kalde den:

SQL = "EXECUTE , parameter2"

Det vil sige at kodningen i SP'en har taget højde for en standardværdi den skal antage hvis du ikke smide noget med ned i den.

/hiks
Avatar billede kovalt Nybegynder
15. juli 2004 - 13:24 #5
hmmm ok.. jeg ved ikke lige hvordan den er kodet... nogen idé om hvad denne fejl betyder. Mangler jeg at installere noget eller hvad er det for noget:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[INTERSOLV][ODBC InterBase driver][InterBase]Dynamic SQL Error, SQL error code = -206, Column unknown, STARTTIME, Client SQL dialect 1 does not support reference to TIME datatype
Avatar billede hiks Nybegynder
15. juli 2004 - 15:34 #6
måske har du en attribut der hedder STARTTIME eller rettere du mangler den i en tabel?

/hiks
Avatar billede kovalt Nybegynder
15. juli 2004 - 19:00 #7
nej den er god nok. Jeg er ret sikker på at fejlen skyldes det der "dialect". Fejlen kommer nemlig kun når jeg prøve at selecte dato eller tid-felter.
Avatar billede hiks Nybegynder
15. juli 2004 - 19:09 #8
kan det så ik bare være formattet på din datotid der er galt?

/hiks
Avatar billede kovalt Nybegynder
15. juli 2004 - 19:15 #9
Jeg har fundet følgende:

http://www.zstyle.dp.ua/eng/iboledb_faq.htm

under punkt 9 står der noget omkring dialect.

hvad er det nu forskellen er på om jeg skriver

strDriver = "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server="& strServerAdr &";Database="& strDatabase &";Uid="& strUsername &";Pwd="& strPassword &";SQL Dialect=3;"

sConnStr = "Provider=ZStyle IBOLE Provider;Password=masterkey;User ID=SYSDBA;SQL Dialect=3; Logging Level=0;Silent mode=True;Character Set=WIN1251;Data Source=:c:\ibprov\Samples\Data\IBDEMO.GDB;Mode=2;Role=Administrator;Lock resolution=1;

- jeg mener hvordan er det nu driveren står i forhold til connStr
Avatar billede hiks Nybegynder
19. juli 2004 - 21:26 #10
jeg må indrømme at jeg er ikke så skarp i lige det med connectionstrings på det punkt der - men det er vel primært et spørgsmål om driver og metoden man efterfølgende kan bruge. Endvidere tror jeg nok at en provider må være til enkelte versioner af en DBMS. Mens at ODBC driveren er af mere generel og måske langsommelig karakter.

/hiks
Avatar billede kovalt Nybegynder
21. juli 2004 - 14:15 #11
OK - nu har jeg fået connectionen til at virke.

Jeg kan dog ikke få kaldet af den stored procedure til at virke. Jeg har følgende:

strSQL = "EXECUTE classesondate '2004-07-21','','','11','Booked','Standby'"
objRec.Open strSQL, objConn

Jeg skal ærlig talt sige at jeg ikke ved om jeg skal angive '' ved tomme værdier eller hvad jeg skal gøre. Det er en stored procedure på en anden server jeg har brug for at kalde og dokumentationen er sparsom :-).

Min fejl er:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[Easysoft][Interbase]Dynamic SQL Error, SQL error code = -104, Token unknown - line 1, char 8, classesondate
Avatar billede barkov Nybegynder
21. juli 2004 - 14:22 #12
kan du ikke prøve at vise SP
Avatar billede kovalt Nybegynder
21. juli 2004 - 14:24 #13
jeg har den ikke.... jeg har blot fået et dokument som angiver hvilke input den tager
Avatar billede kovalt Nybegynder
21. juli 2004 - 14:25 #14
nu er jeg ikke nogen ørn til SP - men er det ikke selve SP-navnet den melder fejl på - som om den ikke findes eller?
Avatar billede barkov Nybegynder
22. juli 2004 - 09:27 #15
du bliver da nød til at have Stored Proceduren. Den burde ligge på den SQL server som du kalder den på.

Men du kan jo teste om det er fordi den melder fejl på SP ved at ændre sql syntax til:
strSQL = "EXEC classesondate '2004-07-21','','','11','Booked','Standby'"

Hvis den så melder fejl i token unknown - line 1, char 5, classesondate
så er det nok pga. at SP ikke findes...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester