Выполнение команды «SET» в SQL до SELECT
Следующийэтот вопросМне нужно добавить что-то вроде
SET LANGUAGE German;
до моегоSELECT
запрос. Я выполняю запрос в веб-среде ASP / VBScript, которая, насколько я знаю, ограничивает меня одним запросом за раз. Если я запускаю запрос, такой как -
SET LANGUAGE German; SELECT.....
Я получаю сообщение об отсутствии результатов, потому что «данные» возвращаются изSET
запрос, а неSELECT
это следует за этим.
Есть ли что-нибудь, что можно сделать, чтобы запуститьSET
иSELECT
вместе в среде ASP / VBScript?
ОБНОВЛЕНИЕ: Согласно предложению Lankymarts:
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 ...
ОБНОВЛЕНИЕ 2:
Теперь, когда проблема закрытого набора записей решена, я все еще не получаю строки из основного набора записей. Это мой код VBScript, ниже. Определенно есть результаты (потому что 21 / февраля / 16 - был в воскресенье, и у меня есть соответствующие записи для этого) - но они не отображаются. На самом деле, даже при отображении через SSMS иногда я не получаю результаты - может быть, его путают с изменениями языка?
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...
Кстати - язык остается на немецком языке после выполнения запроса или возвращается к языку по умолчанию?
Я думаю, что мне нужно здесь, это языковые настройки, по умолчанию это дд / мм / гггг (из-за других устаревших требований в системе) и тот, которыйDATEFIRST
это воскресенье (1).
ТАКЖЕ: Я попытался сделать хранимую процедуру, как таковую:
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
и затем запустите его:
DECLARE @return_value int
EXEC @return_value = [dbo].[procListRakezetSlotsByDay]
@planneddate = N'28/2/2016',
@rakezetID = 182
SELECT 'Return Value' = @return_value
GO
и здесь также, это не возвращает никаких результатов - даже в SSMS ... Я ОЧЕНЬ смущен. спасибо всем, кто помог до сих пор.