-3

問題が発生しているT-SQLコードは次のとおりですdatetime

OPEN @form_dates
FETCH NEXT FROM @form_dates INTO @cid、@regdate、@compdate

/* PRINT @regdate PRINT @compdate これは日時に正しく値を持っています。例: 2012 年 3 月 28 日 6:03PM PRINT@コースノ */

@@FETCH_STATUS = 0の間 始める SET @SQL = N'update tblname set cs' + CAST (@cid AS VARCHAR(10)) + '_begin = @rstring , cs' + CAST (@cid AS VARCHAR(10))+ '_end = @cstring where UserID = '+ CAST (@tempID AS VARCHAR(10))

DECLARE @ParmDefinition nvarchar(500) SET @ParmDefinition = N'@rstring 日時、@cstring 日時'

EXECUTE sp_ExecuteSQL @SQL、@ParmDefinition、 @rstring = @regdate、@cstring = @compdate I have the values of @regdate and @compdate fetched from a cursor and are of the format Jan 3 2012 2:30PM Mar 28 2012 6:03PM but these values are not reflecting in procedure output where I get the output:

update tblname set cs32_begin = @rstring , cs32_end = @cstring where UserID = 419

ありがとう。^

4

1 に答える 1

1

これは、データ型、日時、またはカーソルとは関係ありません。これは、ずさんな一貫性のない変数の命名です。外であなたはそれらを呼びます:

@regstring
@compstring

あなたの中であなたはそれらを呼びます:

@rstring
@cstring

ですから、いずれにせよ、一貫性を保つようにしてください。

SET @SQL = N'update tblname set cs' + CAST (@cid AS VARCHAR(10)) 
+ '_begin = @rstring , cs' + CAST (@cid AS VARCHAR(10))
+ '_end = @cstring where UserID = '+ CAST (@tempID AS VARCHAR(10))

DECLARE @ParamDefinition nvarchar(500)
SET @ParamDefinition = N'@rstring datetime, @cstring datetime'

EXECUTE sp_ExecuteSQL @SQL, @ParamDefinition, 
@rstring = @regdate, @cstring = @compdate
^^-------------------^^

編集

これは私にとってはうまくいきます:

DECLARE @SQL NVARCHAR(MAX);
SET @SQL = N'SELECT _begin = @rstring , _end = @cstring;';

DECLARE @ParmDefinition nvarchar(500)
SET @ParmDefinition = N'@rstring datetime, @cstring datetime'

DECLARE @regdate DATETIME = GETDATE(), @compdate DATETIME = DATEADD(DAY, 1, GETDATE());

EXECUTE sp_ExecuteSQL @SQL, @ParmDefinition, 
@rstring = @regdate, @cstring = @compdate;

結果:

_begin                   _end
-----------------------  -----------------------
2012-06-13 10:28:47.657  2012-06-14 10:28:47.657

スペルやその他の変数名に矛盾がない限り、出力にリテラル「@rstring」が含まれ、パラメーターによって適切に置き換えられない方法がわかりません。このクエリには、あなたが私たちに示しているもの以上のものがあるのではないかと思います。

于 2012-06-12T21:51:09.700 に答える