Die Datentypen nvarchar und varchar sind unvereinbar, in der modulo-operator
Ich bin mit den folgenden cursor-Befehl um einen Datensatz zu aktualisieren, der auf meinem Tisch auf einem join basiert.
Habe ich einige ähnliche code-Ordnung, die in einem anderen Teil meines Programms, ohne dass jedoch, WIE die Logik auf die Verknüpfung.
Aber wenn ich es ausführen dieser code wirft einen Fehler.
Msg 402, Ebene 16, Status 1, Zeile 12
Die Datentypen nvarchar und varchar sind unvereinbar, in der modulo-operator.
Hier ist mein code:
DECLARE @tablevalue NVARCHAR(MAX), @sql NVARCHAR(MAX);
DECLARE table_value_cursor CURSOR
FOR
SELECT DISTINCT [Tariff Lookup]
FROM [OrbisBilling].[dbo].[masked_2014-06-30-2014-06-01-customer325];
OPEN table_value_cursor
FETCH NEXT FROM table_value_cursor INTO @tablevalue
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @sql = N'
UPDATE [masked_2014-06-30-2014-06-01-customer325]
SET [masked_2014-06-30-2014-06-01-customer325].[Sell Price] =
ROUND ([Orbisrates].[dbo].[Orbis_Import_June2014].[Peakperminute] /60 * [OrbisBilling].[dbo].[masked_2014-06-30-2014-06-01-customer325].[ChargedTimeSecs] + [Orbisrates].[dbo].[Orbis_Import_June2014].[Peakconnect], 4)
FROM [OrbisRates].[dbo].[Orbis_Import_June2014]
INNER JOIN [OrbisBilling].[dbo].[masked_2014-06-30-2014-06-01-customer325] on [OrbisBilling].[dbo].[masked_2014-06-30-2014-06-01-customer325].[To] LIKE [Orbis_Import_June2014].[Destination]+'%'
WHERE
[OrbisBilling].[dbo].[masked_2014-06-30-2014-06-01-customer325].[tariff lookup] = '''+ @tablevalue +'''';
EXEC sp_executesql @sql;
FETCH NEXT FROM table_value_cursor INTO @tablevalue;
END
CLOSE table_value_cursor
DEALLOCATE table_value_cursor;
PS. Ich habe getestet das update Abschnitt in der Mitte und das läuft gut auf Ihre eigenen.
Jede Hilfe sehr dankbar.
InformationsquelleAutor user3580480 | 2014-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie immer, dass Fehler durch falsche Verwendung
LIKE
- operator, wie in unten-Anweisung aus dem codeNur setzen Sie es in Anführungszeichen. Sie sollten etwas tun, wie unten (ein Beispiel)
Also in Ihrem Fall sollten Sie es ändern, wie unten
EDIT:
Brauchen Sie nicht einen cursor für das, was Sie zu tun versuchen. Was Sie im wesentlichen tun, ist die
für jeden Wert von
[Tariff Lookup]
unter Tabelle[masked_2014-06-30-2014-06-01-customer325]
Sie sindversuchen zu tun, die
UPDATE
. Das gleiche kann erreicht werden, einfach durch eine einzelne Abfrage, indem Sie Mittel, um dieAuswahl von
[Tariff Lookup]
eine Unterabfrage wie folgt Aussehen. probieren Sie es aus und sehen, wie es geht.Sidenote: Die
WHERE
Zustand tatsächlich nicht viel Sinn hier.Wenn ich die UPDATE-Abfrage ausführen, die auf Ihren eigenen (ohne die Anführungszeichen), die es betrifft. (3842 Reihe(s)) Das problem ist, wenn ich wickeln Sie es in Sie den cursor bekomme ich die Fehlermeldung
das ist eine separate Frage, die gepostet wurden, getrennt. anyways, bearbeitet meine Antwort. Überprüfen Sie die
EDIT:
Teil.Danke @Rahul, der arbeitet jetzt als Beantwortet markiert
a +1 wahrscheinlich... ahh!! Ich bin so gierig. LOL ... nur spass :). Sie sind herzlich willkommen.
InformationsquelleAutor Rahul