2015-10-15 72 views
0

我試圖運行INSERT查詢,但它要求我將varchar轉換爲空。下面的代碼:INSERT查詢SQL(將數據類型nvarchar轉換爲(空)時出錯)

INSERT Runtime.dbo.History (DateTime, TagName, vValue) 
VALUES ('2015-09-10 09:00:00', 'ErrorComment', 'Error1') 

錯誤消息:

錯誤數據類型爲nvarchar轉換爲(空)。

問題出在vValue列。

column vValue(nvarchar, null) 

它的外觀在數據庫:

enter image description here

vValue值由我使用的程序放置。我只是試圖手動插入數據庫。

最後發表的帖子與錯誤的欄目,我很抱歉。

+1

'Error1'無法轉換爲浮點數。浮動實質上是一個數字。 – Rodders

+0

http://stackoverflow.com/questions/1056323/difference-between-numeric-float-and-decimal-in-sql-server鏈接可能會幫助你 –

+0

我使用錯誤的列表,但現在我得到另一個錯誤 – Kostas

回答

1

聯繫Wonderware支持後,我發現vValue專欄不支持INSERT。這是一個字符串值,更新應該通過StringHistory表進行。

0

數據庫中列值的類型是什麼?

如果它是浮動的,你應該插入一個數字,而不是字符串。

將「error1」投射到FLOAT是無意義的。 浮點數是一個數字例子:1.15,12.00,150.15 當您嘗試CAST「Error1」浮動時,他試圖將文本「error1」轉換爲數字,而他不能,這是邏輯。

您應該在列中插入一個數字。

+0

似乎我使用錯誤的欄目,但現在我得到另一個錯誤 – Kostas

+0

如果您嘗試: INSERT Runtime.dbo.History(DateTime,TagName,value,vValue) VALUES('2015-09-10 09:00:00' ,'ErrorComment',null,'Error1') ? – Temporarylol

+0

它不起作用,因爲我試圖在3個柱子中插入4個值 – Kostas

0

我想我可以幫助你解決你的問題,因爲我有一個體面的測試環境來進行試驗。

Runtime.dbo.History不是你可以直接互動的表,它是一個View。在我們的例子這裏的視圖定義爲:

select * from [INSQL].[Runtime].dbo.History 

...我相信這意味着你正在查看的歷史數據來自史記平面文件存儲本身,一個Wonderware的專有系統。您可能看到一些成功,如果您展開SQL Server Management Studio中的

Server Objects -> Linked Servers -> INSQL 

...以及與數據在那裏打球,但我真的不推薦它。

這樣說,你需要插入標籤歷史的原因是什麼?可能有其他解決方法來滿足您的需要。

+0

我正在使用Wonderware產品的2014 R2版本。我想要做的是在以前的時間將數據插入到Historian中。我通過Intouch插入數據,這是我想要運行的查詢。 – Kostas

+0

當我實時更改程序內部的值時,Historian工作的很好,但是如果我想爲先前的時間傳遞一些數據,我不能 – Kostas

+0

這可能是一個誠實問題,需要WW技術支持。它有點打破了歷史學家的整個流程。我知道他們爲歷史記錄使用他們的「平面文件存儲」,這不一定是RDBMS樣式的存儲,您只能通過SSMS訪問它,因爲他們將該Provider提供給InSQL。我正在閱讀關於InSQL編輯器的東西,可能可以使用 – Grambot

相關問題