Ausführen des Befehls 'SET' in SQL vor SELECT
Folgendiese Frag, Ich muss etwas hinzufügen wie
SET LANGUAGE German;
vor meinemSELECT
query. Ich führe die Abfrage in einer ASP / VBScript-Webumgebung aus, was mich meines Wissens im Grunde auf eine einzelne Abfrage gleichzeitig beschränkt. Wenn ich eine Abfrage wie -
SET LANGUAGE German; SELECT.....
Ich erhalte die Meldung "Keine Ergebnisse", da die zurückgegebenen "Daten" vom @ stammeSET
Abfrage und nicht dieSELECT
das folgt darauf.
Gibt es irgendetwas, was getan werden kann, um das @ auszuführeSET
und dieSELECT
zusammen in der ASP / VBScript-Umgebung?
UPDATE: Gemäß Lankymarts Vorschlag:
set rs = SERVER.CreateObject("ADODB.recordset")
rs.open sql, conn, 1, 2
Do While (rs.State = 0 Or rs Is Not Nothing) // also tried: Do While (rs.State = 0 AND rs Is Not Nothing)
Set rs = rs.NextRecordset
Loop
do while not rs.eof
response.write ...
UPDATE 2:
Jetzt, da das Problem mit dem geschlossenen Recordset behoben ist, erhalte ich immer noch keine Zeilen aus dem Haupt-Recordset. Dies ist mein VBScript-Code unten. Es gibt definitiv Ergebnisse (weil 21 / feb / 16 - war am Sonntag, und ich habe passende Datensätze dafür) - aber sie werden nicht angezeigt. Tatsächlich bekomme ich manchmal nicht die Ergebnisse, selbst wenn ich sie über SSMS anzeige - vielleicht ist das alles verwechselt mit den Sprachänderungen?
sql = " SET LANGUAGE German; "
sql = sql & " SELECT [tblstudentrakazot].studentid, firstname, lastname, tblRakezetSchedule.* FROM tblRakezetSchedule"
sql = sql & " INNER join [tblstudentrakazot] on [tblstudentrakazot].scheduleID = tblRakezetSchedule.scheduleid "
sql = sql & " INNER join tblstudents on [tblstudentrakazot].studentid = tblstudents.studentid"
sql = sql & " WHERE CONVERT(int,scheduleday) = datepart(d,convert(datetime,'" & cleanSQL(planneddate) & "',103)) AND "
sql = sql & " tblRakezetSchedule.rakezetID = " & CleanSQL(x_rakezetID)
sql = sql & " ORDER BY replace(scheduletimefrom, ':', '')"
response.Write("### " & sql)
set rs = SERVER.CreateObject("ADODB.recordset")
rs.open sql, conn, 1, 2
Do While rs.State = 0 And Not rs Is Nothing
Set rs = rs.NextRecordset
loop
do while not rs.eof
' we now proceed to loop through the actual result recordset : studentid, firstname etc...
Übrigens: Bleibt die Sprache nach der Ausführung der Abfrage in Deutsch oder wird die Standardsprache wiederhergestellt?
Ich denke, was ich hier brauche, ist eine Spracheinstellung, deren Standardeinstellung TT / MM / JJJJ ist (wegen anderer Legacy-Anforderungen im System) und eine, die dasDATEFIRST
ist Sonntag (1).
EBENFALLS Ich habe versucht, eine gespeicherte Prozedur als solche zu erstellen:
ALTER PROCEDURE [dbo].[procListRakezetSlotsByDay] @planneddate nvarchar(10), @rakezetID int
AS
BEGIN
SET NOCOUNT ON;
SET LANGUAGE German;
SELECT [tblstudentrakazot].studentid, firstname, lastname, tblRakezetSchedule.* FROM tblRakezetSchedule
INNER join [tblstudentrakazot] on [tblstudentrakazot].scheduleID = tblRakezetSchedule.scheduleid
INNER join tblstudents on [tblstudentrakazot].studentid = tblstudents.studentid
WHERE CONVERT(int,scheduleday) = datepart(d,convert(datetime,@planneddate,103)) AND tblRakezetSchedule.rakezetID = @rakezetID
ORDER BY replace(scheduletimefrom, ':', '')
END
und dann starte es:
DECLARE @return_value int
EXEC @return_value = [dbo].[procListRakezetSlotsByDay]
@planneddate = N'28/2/2016',
@rakezetID = 182
SELECT 'Return Value' = @return_value
GO
und auch hier gibt es keine Ergebnisse - auch innerhalb von SSMS ... Ich bin sehr verwirrt. danke an alle die bisher geholfen haben.