„SET QUOTED_IDENTIFIER OFF“ bleibt bei mehreren ADO-Ausführungen nicht bestehenC++

Programme in C++. Entwicklerforum
Guest
 „SET QUOTED_IDENTIFIER OFF“ bleibt bei mehreren ADO-Ausführungen nicht bestehen

Post by Guest »

Ich habe die folgende gespeicherte Prozedur:

Code: Select all

CREATE PROCEDURE tsp_ItemIDtoString (@ItemID binary(8), @SItemID nvarchar(32) output) AS
/*
*
* tsp_ItemIDtoString
*
* Returns a comma separated string representation
* of an item id
*
* Parameters:
* @ItemID - (I) binary 8 byte item id
* @SItemID - (O) string representation of item id
*
*/
declare @i as int
set @SItemID = ""
if (@ItemID is not null) begin
set @i = 8
while (@i > 0) begin
select @SItemID = "," + cast(cast(substring(@ItemID, @i ,1) as int) as varchar)  + @SItemID
set @i = @i -1
end
set @SItemID = right(@SItemID, len(@SItemID) - 1 )
end
Wenn ich es direkt in SQL Server Management Studio ausführe, erhalte ich die folgende Fehlermeldung:

Code: Select all

An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
Dies liegt daran, dass SET QUOTED_IDENTIFIER standardmäßig aktiviert ist und es nicht zulässt, dass Literale durch einfache Anführungszeichen getrennt werden.
Wenn ich Fügen Sie die folgenden Zeilen vor der gespeicherten Prozedur in SSMS hinzu, dann wird es erfolgreich sein:

Code: Select all

SET QUOTED_IDENTIFIER OFF;
GO

...(The above stored procedure).
Daher wende ich dieselbe Lösung auf meine C++-App an, die eine ADO-Verbindung verwendet, um auf die SQL Server-Datenbank zuzugreifen.
Ich gehe wie folgt vor:< /p>

Code: Select all

pConnection->Execute(_T("SET QUOTED_IDENTIFIER OFF;");
pConnection->Execute(strDefinition); // strDefinition is the above stored procedure.
Aber die Anweisung pConnection->Execute(strDefinition); wird weiterhin den oben genannten Fehler erzeugen. Es scheint, dass der erste Aufruf von _T("SET QUOTED_IDENTIFIER OFF;") nicht bestehen bleibt.
Warum funktioniert die Lösung für SSMS, aber nicht in ADO?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post