SQL Serverストアドプロシージャで作業しています。動的SQLを使用して一時テーブルからテーブルに挿入します。エラー:varcharをデータ型数値に変換する算術オーバーフローエラー
これは動作するコードの一部です:DatabaseName
は変数になります
INSERT INTO [MYBASE].dbo.[DatabaseName]
:
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
を今、私はこの部分を変更する必要があります。
私はこれを試してみた:
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)
が、それは動作しません。これは私が得るエラーです:
Arithmetic overflow error converting varchar to data type numeric.
助けてください。私は引用符で記述することを避けるために同義語でこれを行ってきた
なぜあなたは、カラムとして「データベース」ではなく一つのテーブルよりも、それぞれの「データベース」のために別のテーブルを持っているでしょう名? –
'database'という名前のテーブルがありますか? – LONG
いいえ、「データベース」という名前のテーブルはありません。私の悪い、申し訳ありません。 'DatabaseName'の代わりに、テーブルの実名が入ります。 – Ina