アプリケーションを開発することによって。テーブル名(@pxxx)を呼び出す動的ストアドプロシージャが必要です。同じパラメータを渡します。ここには2(datum、por)があります。 tablenameを@pxxx-o.kとして渡しています。また、パラメータdatum、porがタイプ-intまたはvarchar、またはcharまたはその組み合わせである場合。 Int私はCONVERTによってvarcharに変更されます - プロシージャはうまく行きます。さて、C#から電話をかけています。 パラメータ-datumをdatetimeに変更すると問題が発生します。それは動作していません。 varcharに "convert"して日付を変更すると助けになりません。 SQL管理スタジオでは機能しません。私はテーブルのデータム[datetime]に必要なので、問題を解決する必要があります テーブル定義を変更できません。datetimeが必要です。 パラメータと動的SQLストアドプロシージャを渡すことについてのほとんどの質問を探しましたが、解決策が見つかりませんでした。 MS SQL 2005でSQL Serverストアドプロシージャのパラメータ - 異なる種類
表の定義:
CREATE TABLE [dbo].[p001](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[datum] [datetime] NULL,
[por] [int] NULL,
[cas] [nchar](5) NULL,
[max] [int] NULL,
[obsad] [int] NULL,
[blok] [bit] NULL
one of it) ON [PRIMARY]
私のストアドプロシージャは - まあだけwithous日時パラメータを作業-
ALTER PROCEDURE [dbo].[SPinsertpxx2] (@pxxx nchar(4),@date datetime, @por int)
AS
DECLARE @sqlCommand varchar(500)
SET @sqlCommand = 'INSERT INTO '+ @pxxx +' ([datum],[por]) VALUES('
+CONVERT(VARCHAR,@date,112)+','+CONVERT(VARCHAR,@por,5)+')'
BEGIN
EXEC (@sqlCommand)
END
このストアドプロシージャを動作していない。
ALTER PROCEDURE [dbo].[SPinsertpxxx] (@pxxx nchar(4),@cas nvarchar(10), @por int)
AS
DECLARE @sqlCommand varchar(500)
SET @sqlCommand = 'INSERT INTO '+ @pxxx +' ([cas],[por]) VALUES('
+CONVERT(VARCHAR,@cas)+','+CONVERT(VARCHAR,@por)+')'
BEGIN
EXEC (@sqlCommand)
END
英国の言語を114に変更しました。 –
datetimeを文字列から変換すると、msg msg>が失敗しました。 私は、動的SQLでcomandがstring(varchar)でなければならないと読んでいます。したがって、すべてのパラメータはCONVERT(VARCHAR、@パラメータ)によって変換されますが、intは役に立ちましたがdatetimeは役に立ちませんでした。 –
ここではいくつかの問題が発生しています。まず、SQLインジェクションを防ぐために動的SQLをパラメータ化する必要があります。また、varcharに変換していますが、長さを指定していません。私の質問は、なぜあなたはvarcharを渡しているdatetime列に挿入している場合ですか?あなたはまた、 "働かない"を定義する必要があります。どういう意味ですか? –