> 
> Der Unterschied zu Deiner L�sung ist doch nur das ich den 
> Namen des Parameters mit angebe!?
> Die mache ich, da die SP von mehreren Stellen mit 
> unterschiedlichen Parametern aufgerufen wird und innerhalb 
> der SP dann entschieden wird was gemacht werden muss.

N�. Der unterschied liegt woanders. Probier den Code mal aus, dann siehst Du
es.


> Bzw. �bergibst Du ja in Deinem Beispiel die Variablen im 
> String??? Werden die Inhalte denn so an die SP �bergeben?

Wenn Du SQL zusammenbaust ja, wenn Du aber Commands mit Parametern benutzt
nicht.


> Ok, aber innerhalb der SP kann doch dann wieder alles 
> m�gliche passieren.

Eben nicht.
SPs werden kompiliert. Dabei wird SQL in Befehle der Engine umgesetzt und
die Parameter sind auch wirklich Parameter zu diesen Befehlen. Da wird also
nichts mehr als SQL interpretiert.


> Mal ein Beispiel von mir, vielleicht werden meine Zweifel dann klarer.
[..]
>       SELECT * FROM myUser WHERE [EMAIL PROTECTED]
[..]
> Der Aufruf w�re dann doch wie folgt:
> EXEC sp_getUser & " @User=" & Request.Form("UserName")

Naja .. Ist ein varchar, also wenn schon, dann so:
Sql = "EXEC sp_getUser" & " @User=""" & Request.Form("UserName") & """"

Und das ist der Fehler... Du baust SQL zusammen, dass die SP aufruft, statt
sie direkt aufzurufen.

Cmd.CommandText = "sp_getUser"
Cmd.CommandType = adCmdStoredProc
Set param = cmd.createParameter("@User", Request.Form("UserName"))
'vereinfacht
Cmd.Parameters.Append param
Set rs = cmd.Execute()

Das Geheimnis ist halt, dass jetzt ADODB nicht ein "EXEC sp_getUser
..."-SQL-String erzeugt, sondern die StoredProcedure direkt aufruft, wie
eine Methode in Deinem Programm.

Sehen wir sie uns nochmal an:

CREATE PROCEDURE dbo.sp_getUser
        (
                @User varchar(255) = ''
        )
AS

        SELECT * FROM myUser WHERE [EMAIL PROTECTED]

RETURN

Was da eigentlich steht ist sowas(nur eben in T-SQL, statt VBS):

sub sp_getUser(@User)
        SELECT * FROM myUser WHERE [EMAIL PROTECTED]
End sub

Beim Aufruf wird dann die Variable die Du �bergeben hast direkt
weitergereicht an die Sub/SP und in die variable/Parameter @User kopiert.


Wenn ich in vbs ein sub hab, brauch ich ja auch keine Angst haben, das
�bergebene Variablen VBS-Code enth�lt, es sei denn ich benutze Execute,
welches einen String ausf�hrt und genau das machst Du auch, wenn Du Dir Dein
SQL so zusammenbastelst, dass auch die Werte direkt mit �bergeben werden.


Hmm.. Weiss garnicht ob das jetzt besser gewesen ist...
Ich meine an meiner letzten Mail kann man eigentlich alles sehen, wenn ma
nden Code ausprobiet und ei vorgeschlagenen �nderungen etc. mal
ausprobiert...



Claudius

_______________________________________________
Coffeehouse Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/coffeehouse

Antwort per Email an