.net/C#を使用してWebアプリケーションを開発したいと考えています。私はSQL Serverストアドプロシージャを持っていて、動的な日時パラメータを渡したいと思います。カラムがdatetimeタイプの場合のパラメータとしてのSQL Serverカラム
私はここにexec(@sql)
を使用し、私が得るパラメータを指定してストアドプロシージャです:
Error:System.Data.SqlClient.SqlException:
Conversion failed when converting datetime from character string.
私もいくつかの実際の値を渡してみました(下記参照)、また、SQL Serverのデバッグを試みたが、それは動作しません。
誰でもお手伝いできますか?ありがとうございます。
ALTER PROCEDURE [dbo].[production_tb_WorkshopDailyReports_INSERT]
@intDepartmentID int,
@intReportUserID int,
@intProductionLineID int,
@intBatchID int,
@intVINID int,
@columnname nvarchar(255),
@dtOnlineTime datetime,
@strRemark nvarchar(50),
@intCreateUserID int
AS
BEGIN
declare @column nvarchar(255)
declare @sql nvarchar(1000)
declare @intID int
set @columnname = 'dtOnlineTimeChassis'
set @column = @columnname
set @intDepartmentID = 1
set @intReportUserID = 1
set @intProductionLineID = 1
set @intBatchID = 1
set @intVINID = 1
set @dtOnlineTime = '2016-04-26 10:00:00pm'
set @strRemark = 'remark information'
set @intCreateUserID = 1
set @sql = 'Insert Into production_tb_WorkshopDailyReports (intDepartmentID, intReportUserID, intProductionLineID, intBatchID, intVINID,' + @column + ', strRemark, intCreateUserID) values ' + '(' + cast(@intDepartmentID as nvarchar(20)) + ',' + cast(@intReportUserID as nvarchar(20)) + ',' + cast(@intProductionLineID as nvarchar(20)) + ',' + cast(@intBatchID as nvarchar(20)) + ',' + cast(@intVINID as nvarchar(20)) + ',' + @dtOnlineTime + ',' + @strRemark + ',' + cast(@intCreateUserID as nvarchar(20)) + ')'
(@intReportUserID as nvarchar(20))+','+cast(@intProductionLineID as nvarchar(20))+','+cast(@intBatchID as nvarchar(20))+','+cast(@intVINID as nvarchar(20))+','+''+','+cast(@intCreateUserID as nvarchar(20))+')'
exec(@sql)
End
単一の日付を使用せずに 'string'を' datetime'に変換するのに役立つSQL [CONVERT()fucntion](http://www.w3schools.com/sql/func_convert.asp)をお読みください。フォーマット。 – fujiFX
なぜexecを使いたいですか? insert文を直接使うことはできませんか?コンマやすべてを使用してクエリを書式設定することを避けることができます。 –