Meine erste Tabellenwertfunktion und cursor

Ich habe diese Abfrage:

SELECT name, lastname
FROM contestant 
WHERE  name= 'John'  AND lastname = 'Smith'

Bekomme ich mehrere Ergebnisse aus der Abfrage oben, und ich brauche, um Sie für die folgende Abfrage:

SELECT  name, lastname,prize, city 
FROM draw
WHERE  name= name from table contestant  AND lastname= name from table contestant  

Moment Baue ich eine Tabellenwertfunktion mit einem cursor eine WEILE, so kann ich eine Tabelle mit den Ergebnissen.

Hier ist mein Versuch, kannst du mir bitte helfen füllen Sie es? es wird sehr hilfreich für mich, um dies zu verstehen TSQL-Kapitel. Danke!

CREATE FUNCTION [dbo].[myFunction]
(
    @name varchar (44),
    @lastname varchar (44) 
)
RETURNS 
@tmpTable TABLE 
(   
    name char(44),
    lastname char(44),
    prize varchar(44),
    city char(44)

)
AS
BEGIN

    DECLARE 
/* what do I have to input here */

    DECLARE myCursor CURSOR FOR

SELECT name, lastname
FROM contestant 
WHERE  name= @name  AND lastname = @lastname

    OPEN myCursor

    FETCH NEXT FROM myCursor INTO  /* what goes here?*/



    WHILE (@@FETCH_STATUS = 0) 
    BEGIN

 -- and here? 

        FETCH NEXT FROM myCursor INTO /* what goes here?*/


    END /*WHILE*/

    CLOSE myCursor
    DEALLOCATE myCursor


    INSERT INTO @tmpTable (name, lastname,prize, city)
    SELECT name, lastname,prize, city 
        FROM prize
        WHERE name = @name AND lastname = @lastname

    RETURN
END
  • sollten Sie eine Verknüpfung für Ihre ersten beiden Abfragen. und es sei denn, das ist ein cut-down-Beispiel, warum sind Sie bei der Auswahl zwei Felder, für die Sie sind, geben Sie die Werte in der where-Klausel sowieso? "geben Sie mir $5, hier ist $5, die Sie verwenden können" ist nicht besonders hilfreich.
  • Ich versuche zu lernen tabellenwertfunktionen und Cursor, eine union wird nicht helfen, mich mit ihm. Dank
  • Vermeiden Sie Cursor - Sie sind böse, Sie sind hell, Sie sind wirklich, wirklich schrecklich für Leistung - vermeiden Sie, Wann immer Sie können - und Sie KÖNNEN vermeiden Sie in mindestens 90% der Fälle....
  • Dank marc_s, ich nehme Ihre Beratung. Aber nur um zu wissen Sie, Wann ich mit Ihnen zu tun haben, könnten Sie mir bitte sagen, wie der code oben? nochmals vielen Dank
InformationsquelleAutor Miguel Mas | 2012-11-15
Schreibe einen Kommentar