[英]Arithmetic overflow error converting varchar to data type numeric in SQL Server
[英]Insert into table from temp table using dynamic SQL; Error: Arithmetic overflow error converting varchar to data type numeric
我正在研究SQL Server存儲過程。
這是有效的代碼部分:
INSERT INTO [MYBASE].dbo.[DatabaseName]
([Employee No_], [From Date], [To Date], [Description], [Quantity],[First Name], [Last Name])
SELECT
EmployeeNo, FromDate, ToDate, Description, Quantity,
FirstName, LastName
FROM
#User_Data
現在,我需要更改此部分:
INSERT INTO [MYBASE].dbo.[DatabaseName]
其中DatabaseName
將是變量。
我已經試過了:
CREATE TABLE #User_Data
(
User_id INTEGER,
FirstName VARCHAR(30),
LastName VARCHAR(30),
EmployeeNo VARCHAR(20),
Description VARCHAR(50),
FromDate DATETIME,
ToDate DATETIME
)
INSERT INTO #User_Data
SELECT u.fname, u.lname, u.employee_no, ... (this works)
DECLARE @InsertStatement VARCHAR(MAX)
SET @InsertStatement =
'INSERT INTO [MYBASE].dbo.[' + @DatabaseName + ']
([Employee No_], [From Date], [To Date], [Description],
[Quantity], [First Name], [Last Name])
SELECT
EmployeeNo, FromDate, ToDate, Description,
Quantity, FirstName, LastName
FROM
#User_Data'
EXEC(@InsertStatement)
但它不起作用。 這是我得到的錯誤:
將varchar轉換為數值數據類型的算術溢出錯誤。
請幫忙。
我一直在使用同義詞來避免在引號中寫:
Declare @MyDB as nvarchar(100) = 'myDBName'
if exists(select * from sys.synonyms where name = N'TableinMyDB') drop synonym [TableinMyDB];
exec('CREATE SYNONYM [TableinMyDB] FOR [' + @MyDB + '].dbo.[myTableName];');
INSERT INTO [TableinMyDB]
(
[Employee No_]
,[From Date]
,[To Date]
,[Description]
,[Quantity]
,[First Name]
,[Last Name]
)
SELECT
EmployeeNo
,FromDate
,ToDate
,Description
,Quantity
,FirstName
,LastName
FROM #User_Data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.