Prozedur: Wert auswählen



  • Hallo Forum,

    wenn eine SQL Prozedur mehrere Werte in einer Row errechnet, wie kann ich dann einen auswählen? Das Ganze als ein SQL Stmnt.

    Also ich habe eine Fremdanwendung bei der ich Custom Textboxen in der Oberfläche erstellen kann. Diese Texboxen haben eine SQL Eigenschaft die jedes Mal ausgeführt wird wenn die Form geladen wird. Aktuell kann ich dort nur SQL Prozeduren verwenden die einen einzigen Rückgabewert haben. Ich würde nun gerne Prozeduren verwenden die mehrere Rückgabewerte haben und einen auswählen der in der Textbox steht.

    Vielen Dank

    Peter



  • So wie ich das verstehe, ist das eher eine Frage des Programmes, in der die Textboxen aufgebaut werden. Da wird es ja sowas geben wie (Pseudocode):

    textbox.setText(sql_procedure())
    

    Das müsste man dann halt ändern. Ohne den Code zu kennen, wird das nicht möglich sein. Oder habe ich dich falsch verstanden?



  • Ich habe eine SQL Prozedur die nicht von mir ist und die auch von der Fremdanwendung verwendet wird. Ich kann sie also nicht ändern. Ich möchte sie aber benutzen:

    EXECUTE BerechneWerte
                    @Param1 = 'abc',
                    @Param2 = 'abc',
                    @Param3 = 1,
                    @Param4 = 'def'
    

    Ergebnis:

    1,3    1,4    12121,    'Ok'
    1,2    1,3    56746,    'Alternative'
    

    In der einen Textbox möchte ich den obersten Wert aus der zweiten Spalte schreiben und in die zweite Textbox den String.

    TextBox1.SetSQL("EXECUTE BerechneWerte ...");
    TextBox1.SetSQL("EXECUTE BerechneWerte ...");
    

    Scheinbar gibt es hierfür keinen einfachen Weg:
    http://stackoverflow.com/questions/1492411/sql-server-select-from-stored-procedure
    http://www.sommarskog.se/share_data.html

    Ich habe jetzt auch keinen direkten Zugriff auf die Datenbank (jetzt auf meinem Dev Rechner schon, aber später bei der Kunden Installation nicht), ich weiß zb den Datenbanknamen nicht. Deshalb geht dieses nicht:

    SELECT  * 
    INTO    #tmp FROM    
    OPENQUERY(YOURSERVERNAME, 'EXEC MyProc @parameters')
    

    Ich habe jetzt erstmal die Prozedur kopiert und an meine Bedürfnisse angepasst. Es gibt die Prozedur also mehrmals. Wenn ich mehr Zeit habe versuche ich den Weg von Charles Bretana (das mit der Temporären Tabelle):

    You can create a table variable to hold the result set from the stored proc and then
    Declare @T Table ([column definitions here])
    insert the output of the stored proc into the table variable and then
    Insert @T Exec storedProcname params
    use the table variable exactly as you would any other table...
    Select * from @T Where ...


Log in to reply