Truncate table-dann einfügen von Daten in dieselbe Tabelle nur Beilagen 1 Eintrag
Weiß jemand, was ich falsch mache hier, ich habe eine Webseite, die bekommt Währung von Daten aus einer remote-Quelle, bekomme ich die Daten und legen Sie diese in sql-Datenbank über eine gespeicherte Prozedur. Wenn ich truncate vor der insert-Anweisung schneidet die Tabelle aus und fügt Sie den letzten Datensatz.
Wenn ich entfernen Sie die truncate, fügt er alle Datensätze an.
ich.e
truncate table tblTablename;
insert into tblTablename
(columns)
values
(data)
Oben stecken Sie den letzten Datensatz aus 289 Datensätze.
Wenn ich entfernen, abschneiden, alle 289 Datensätze eingefügt werden.
Habe ich versucht, mit waitfor, für 1 Sekunde, aber das konnte nicht funktionieren.
Ich bin mir nicht sicher, was anderes zu tun, so dass jede Hilfe wäre sehr geschätzt
In der Webseite habe ich eine foreach-Schleife
George
/---------------------- SQL-Code -----------------
ALTER PROCEDURE [dbo].[atSP_InsertCurrency]
-- Add the parameters for the stored procedure here
@CurrencyCountry VarChar(150),
@CurrencyRate VarChar(150),
@UpdateSuccessFail INT OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
TRUNCATE TABLE [dbo].[at_CurrencyRates];
WAITFOR DELAY '000:00:01'
INSERT INTO [dbo].[at_CurrencyRates]
(
[CurrencyCode],
[CurrencyExchangeRate]
)
VALUES
(
@CurrencyCountry,
@CurrencyRate
)
IF(@@ROWCOUNT > 0)
BEGIN
select @UpdateSuccessFail = '1'
END
ELSE
BEGIN
select @UpdateSuccessFail = '0'
END
END
- Poste bitte deinen aktuellen code.
insert into tblTablename (columns) values (data)
immer nur Beilagen 1 Zeile außer wenn Sie mehrere Elemente durch ein Komma getrennt. - Der code, den Sie hier zeigen, fügt einen Datensatz, nicht 289. Können Sie nach dem code, fügt 289 records!
- Oder sind Sie vielleicht aufrufen der gespeicherten Prozedur 289 Zeiten?
- Ich habe Hinzugefügt, sql-code
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie sich zu bewegen
TRUNCATE TABLE [dbo].[at_CurrencyRates];
aus der gespeicherten Prozedur, wenn Sie anrufen, es 289 mal einfügen, Zeile für Zeile.Jedes mal, wenn Sie rufen Sie die gespeicherte Prozedur löscht alle Zeilen aus der Tabelle, so dass Sie immer nur die eine Zeile, die Sie gerade eingefügt.
Besser wäre, ändern Sie die gespeicherte Prozedur zu tun, legen Sie alle erforderlichen Zeilen in einem Rutsch, anstatt nur eine zu einem Zeitpunkt. Sie können eine Tabelle geschätzt, die parameter zu übergeben, in der alle gewünschten Zeilen, dann würden Sie brauchen nur eine
TRUNCATE
gefolgt von einemINSERT [dbo].[at_CurrencyRates] ... SELECT * FROM @TVP
.MERGE
syntaxDachte, ich möchte hinzufügen, meine Arbeits-source-code für jeden Besucher, der ruft json-Daten und will dann bulk insert die Daten in sql mit MERGE
Ich bin kein professioneller Programmierer, ich Lerne mich nach entlassen wurden und ich muss zugeben, je mehr ich Lerne, desto weniger weiß ich, der code ist aus stundenlang googeln merge gestern und Lesen andere Völker blogs/posts, zu viele Seiten, um Sie hier zu erwähnen, aber danke an all die Programmierer zu geben, Ihre Zeit und blog über, wie Sie das problem lösen mit Tipps und tricks.
Den code, den ich geliefert haben, funktioniert OK, in meinem Projekt.
George