我用這個 FDQuery SQL 更新了一個計數器(沒有自動增量......不是我的資料庫......):
UPDATE CountersTables
SET Cnter = Cnter 1
OUTPUT Inserted.Cnter
WHERE TableName = 'TableName'
我執行 FDQuery.ExecSQL 并且它有效:'Cnter' 遞增。
我需要檢索新的“計數器”值,但后續命令
newvalue := FDQuery.FieldByName('Cnter').AsInteger
失敗并出現錯誤:
... EDatabaseError ...'CountersTables:找不到欄位'Cnter'。
獲得該值的方法是什么?
uj5u.com熱心網友回復:
TFDQuery.ExecSQL()用于不回傳記錄的查詢。但是您要求您的查詢回傳一條記錄。所以TFDQuery.Open()改用,例如:
FDQuery.SQL.Text :=
'UPDATE CountersTables'
' SET Cnter = Cnter 1'
' OUTPUT Inserted.Cnter'
' WHERE TableName = :TableName';
FDQuery.ParamByName('TableName').AsString := 'TableName';
FDQuery.Open;
try
NewValue := FDQuery.FieldByName('Cnter').AsInteger;
finally
FDQuery.Close;
end;
如果您連接的資料庫不支持UPDATE OUTPUT 到變數OUTPUT中,則會顯示一些替代方法,您可以將更新后的計數器保存到本地 SQL 變數/表中,然后您可以從中獲取。SELECT
uj5u.com熱心網友回復:
您還擁有RETURNING Unified 支持好的,檔案僅顯示 INSERT SQL,但 UPDATE 也可以。我應該為表名使用替換變數
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/424517.html
