2 Stimmen

Wie kann ich einen NTEXT-Wert lesen und ihn dann mit sp_executesql in SQL Server 2000 ausführen?

Ich habe eine Tabelle in einer SQL Server 2000-Datenbank, die SQL-Anweisungen in einem NTEXT Spalte. Ich muss einen dieser Werte lesen, einige Ersetzungen vornehmen und dabei UPDATETEXT und führen ihn dann mit sp_executesql . Ich bin mir bewusst, dass Sie nicht erklären können, dass NTEXT Variablen in SQL Server 2000. Um dies zu umgehen, habe ich eine temporäre Tabelle deklariert, um den Wert zu speichern und ihn zu manipulieren. Der letzte Schritt ist die Übergabe dieses Wertes an sp_executesql aber ich kann nicht herausfinden, wie man das macht. Repräsentative Code so weit ist unten:

/*Create a temp table to store the NTEXT SQL statement*/
CREATE TABLE #temp
(
    SqlStatement NTEXT
)

/*Get the statement*/
INSERT INTO #temp (SqlStatement)
SELECT [SqlStatement]
FROM [Reports]
WHERE ID = @ID

-- Format placeholders in statement
DECLARE @placeholder VARCHAR(20)
DECLARE @placeholderIndex INT           
SET @placeholder = '@param1'

SELECT @placeholderIndex = (CHARINDEX(placeholder, SqlStatement) - 1) FROM #temp

/*Get a pointer to the NTEXT field*/
DECLARE @textPtr VARBINARY(16)
SELECT @textPtr = TEXTPTR(SqlStatement) FROM #temp

IF @placeholderIndex > 0
BEGIN         
UPDATETEXT #temp.SqlStatement @textPtr @placeholderIndex 7 'paramValue'
END

/*
Get the statement and execute
DECLARE @SqlText NTEXT -- This is not possible in SQL 2000
*/

exec sp_executesql @SqlText

Wie kann ich die SQL-Anweisung abrufen und ausführen? Die Umwandlung in ein varchar würde die Anweisung möglicherweise abschneiden.

NB: Mir ist klar, dass dies ein mühsamer Weg ist; die Gestaltung des Systems liegt nicht in meiner Hand.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X