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
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, solange Sie verstehen, dass:
Aber um deine Frage zu beantworten wie kann ich einen cursor, verwenden, hier ist einige ungetestete code, hoffentlich gibt Ihnen das Konzept.
und als Vergleich, hier ist die richtige Lösung:
Seine kleinere, einfacher und schneller.