SQL Server:データ型nvarcharを日時に変換中にエラーが発生しました

Zealot91

編集 すべてのあなたの助けをありがとう。

まず第一に、私はこれと同じエラーを抱えている人々のたくさんの投稿と質問を読みました、鉱山は異なります、intそしてbigintエラーは同じままです、私は挿入または更新することができません。私はMicrosoftSQL Server 2017 Management Studioを使用していますが、この2〜3日間この問題が発生しています。答えがたくさんあることはわかっていますが、Fが間違っていることはわかりません。

これは私のストアドプロシージャです:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[myproc]
    (@name VARCHAR(50),
     @ID BIGINT,
     @birthdate DATETIME,
     @Enabled BIT,
     @married BIT,
     @employees INT,
     @hiredDate DATETIME)
AS
BEGIN 
    SET NOCOUNT ON

    DECLARE @sql AS NVARCHAR(MAX)       
    SET @sql ='IF EXISTS(SELECT * FROM MyTable WHERE MyTable.ID ='+@ID+')
                     UPDATE MyTable
                     SET
                     name ='+@name+'
                    ,birthdate='+@birthdate+'
                    ,Enabled ='+@Enabled+'
                    ,married='+@married+'
                    ,employees='+@employees+'
                    ,hiredDate='+@hiredDate+'
                    where ID = '+@ID+'
                ELSE
                INSERT INTO MyTable(name,ID,birthdate,Enabled,married,employees,hiredDate)VALUES(
                '+@name+','+@ID+','+convert(varchar,@birthdate,20)+','+@Enabled+','+@married+','+@employees+','+convert(varchar,@hiredDate,20)+')'

    EXEC (@SQL)
END

私はこのいまいましいエラーにうんざりしていて、それを失っています。

メッセージ8114、レベル16、状態5、プロシージャtestinsert、行0 [バッチ開始行0]
データ型varcharの日時への変換中にエラーが発生しました。

私はこの小さなテーブルを作ったので、この試用版を試してみることができました

このストアドプロシージャは次のコマンドで実行します。

DECLARE @return_value INT

EXEC @return_value = testinsert
        @name = 'asd',
        @ID = 25,
        @birthdate = '2018-12-10 16 45 00',
        @Enabled = 1,
        @married = NULL,
        @employees = NULL,
        @hiredDate = NULL

SELECT  'Return Value' = @return_value
GO

テーブル:

[dbo].[MYDTABLE]
           ([name]
           ,[ID]
           ,[birthdate]
           ,[Enabled]
           ,[married]
           ,[employees]
           ,[hiredDate])
     VALUES
           (<name, varchar(50),>
           ,<ID, bigint,>
           ,<birthdate, datetime,>
           ,<Enabled, bit,>
           ,<married, bit,>
           ,<employees, int,>
           ,<hiredDate, datetime,>)
GO
ショーン・ランゲ

テーブル名を渡そうとしているので(質問ではなくコメントで言及されています)、テーブル名はパラメーター化できないため、動的SQLが必要です。ただし、すべての値と同じように、名前をパラメーターとしてプロシージャに渡すことができます。次に、動的SQLをパラメーター化して、データ型変換などの面倒な作業をすべて排除できます。このようなものはかなり近いはずです。また、読みやすくするために空白をたくさん追加しました。

ALTER PROCEDURE [dbo].[myproc]
(    
    @name varchar(50)
    , @ID bigint
    , @birthdate datetime
    , @Enabled bit
    , @married bit 
    , @employees int
    , @hiredDate datetime
    , @TableName sysname
)
AS
BEGIN 
    SET NOCOUNT ON
    DECLARE @sql AS NVARCHAR(MAX)       
    SET @sql = 'IF EXISTS(SELECT * FROM ' + QUOTENAME(@TableName) + ' WHERE ID = @ID )
                     UPDATE ' + QUOTENAME(@TableName) + ' 
                     SET
                     name = @name
                    , birthdate = @birthdate
                    , Enabled = @Enabled
                    , married = @married
                    , employees = @employees
                    , hiredDate = @hiredDate
                    where ID = @ID
                ELSE
                INSERT INTO ' + QUOTENAME(@TableName) + '
                (
                    name
                    , ID
                    , birthdate
                    , Enabled
                    , married
                    , employees
                    , hiredDate
                )VALUES
                (
                    @name
                    , @ID
                    , @birthdate
                    , @Enabled
                    , @married
                    , @employees
                    , @hiredDate
                )'
EXEC sp_executesql @sql,
    N'@name varchar(50)
    , @ID bigint
    , @birthdate datetime
    , @Enabled bit
    , @married bit 
    , @employees int
    , @hiredDate datetime'
    , @name = @name 
    , @ID = @ID
    , @birthdate = @birthdate
    , @Enabled = @Enabled
    , @married = @married
    , @employees = @employees
    , @hiredDate = @hiredDate

END

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

SQL Server:データ型nvarcharを数値に変換中にエラーが発生しました

INSERTクエリSQL(データ型nvarcharを(null)に変換中にエラーが発生しました)

SQL Server:使用されているWHERE条件に応じて、データ型nvarcharを数値に変換中にエラーが発生しました

SQL Server:データ型varcharを数値に変換中にエラーが発生しました

OPENXML sqlの場合、空のXMLノードのデータ型nvarcharを数値に変換中にエラーが発生しました

データ型varcharを数値に変換中にエラーが発生しました。sql t-sql

データ型varcharを数値に変換中にエラーが発生しました。sql t-sql

SQL-データ型varcharを数値に変換中にエラーが発生しました

SQLで式をデータ型intに変換中にエラーが発生しました

SQL Server:データ型varcharを数値に変換中にエラーが発生しました(奇妙な動作)

SQL関数でvarcharを日時に変換中にエラーが発生しました

SQL Server変換エラー:nvarchar値「XXX」をデータ型intに変換するときに変換に失敗しました

nvarcharをintに変換するときにエラーが発生しました...数値ですか?-Laravel、SQL

SQL:varcharをintに変換中にエラーが発生しました

SQLでvarcharをdatetimeに変換中にエラーが発生しました

のような日付を選択すると、SQL Server2012が文字列から日付を変換中にエラーが発生しました

SQLクエリのnvarcharからデータ型intへの変換でストアドプロシージャでエラーが発生しました

日付を日時に変換すると、SQLでエラーが発生します

生のSQLを雄弁なコードに変換中にエラーが発生しました

Laravel with SQL server 2008 throw "varcharデータ型を日時データ型に変換すると、値が範囲外になりました"

動的SQLクエリでvarcharを数値に変換中にエラーが発生しました

org.h2.jdbc.JdbcSQLDataException:「 'MONTH'」の変換中にデータ変換エラーが発生しました。SQLステートメント:

SQLデータ名の作成中にエラーが発生しました

java.sql.Dateをjava.time.LocalDateに変換中にJavaSpring BootJpaエラーが発生しました

SQL結果を文字列に変換中にエラーが発生しました

SQL Serverで(変換に失敗しました)エラーが発生しました

C#の日時をSQLサーバーの日時に変換するとエラーが発生します

PythonでSQLにデータをアップロード中にエラーが発生しました

一時テーブルから永続テーブルにデータをインポート中に動的SQLでエラーが発生しました

TOP 一覧

  1. 1

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  2. 2

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  3. 3

    Python / SciPyのピーク検出アルゴリズム

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    androidsoongビルドシステムによるネイティブコードカバレッジ

  7. 7

    ZScalerと証明書の問題により、Dockerを使用できません

  8. 8

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    二次導関数を数値計算するときの大きな誤差

  11. 11

    Ansibleで複数行のシェルスクリプトを実行する方法

  12. 12

    画像変更コードを実行してもボタンの画像が変更されない

  13. 13

    Reactでclsxを使用する方法

  14. 14

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  15. 15

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  16. 16

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  20. 20

    好き/愛の関係のためのデータベース設計

  21. 21

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

ホットタグ

アーカイブ