Я получаю сообщение об ошибке «Ошибка преобразования типа данных nvarchar в float» при выполнении следующего
declare
@completeCommand nvarchar (max) = 'x'
,@paramVal nvarchar (100)
,@paramName nvarchar (100)
,@paramType nvarchar (100)
,@tempParam sql_variant
declare @parameterList table (
RowID int identity (1,1)
,ParameterValue nvarchar (100)
,ParameterName nvarchar (100)
,ParameterType nvarchar (100)
)
insert into @parameterList
values
('10', 'Param1', 'int')
,('test', 'Param2', 'nvarchar')
-- Process each parameter one at a time
declare ParameterCursor cursor fast_forward for
select ParameterValue, ParameterName, ParameterType
from @parameterList
order by RowID
open ParameterCursor
fetch next from ParameterCursor into @paramVal, @paramName, @paramType
if @@FETCH_STATUS = 0
set @completeCommand = @completeCommand + ' '
while @@FETCH_STATUS = 0
begin
print @completeCommand
-- verify the datatype is correct
set @tempParam = case @paramType
when 'int' then CAST (@paramVal as int)
when 'float' then CAST (@paramVal as float)
when 'nvarchar' then CAST (@paramVal as nvarchar)
else 'NULL'
end
set @completeCommand = @completeCommand + @paramName + ' = ' + @paramVal + ','
fetch next from ParameterCursor into @paramVal, @paramName, @paramType
end
close ParameterCurosr
deallocate ParameterCursor
То, что я пытаюсь Прежде чем добавлять данные в командную строку, необходимо убедиться, что введенные пользователем данные соответствуют ожидаемому типу данных. Мы будем очень благодарны за любые отзывы о том, почему приведенный выше код не работает.
Ура,
Я получаю сообщение об ошибке «Ошибка преобразования типа данных nvarchar в float» при запуске следующего
declare
@completeCommand nvarchar (max) = 'x'
,@paramVal nvarchar (100)
,@paramName nvarchar (100)
,@paramType nvarchar (100)
,@tempParam sql_variant
declare @parameterList table (
RowID int identity (1,1)
,ParameterValue nvarchar (100)
,ParameterName nvarchar (100)
,ParameterType nvarchar (100)
)
insert into @parameterList
values
('10', 'Param1', 'int')
,('test', 'Param2', 'nvarchar')
-- Process each parameter one at a time
declare ParameterCursor cursor fast_forward for
select ParameterValue, ParameterName, ParameterType
from @parameterList
order by RowID
open ParameterCursor
fetch next from ParameterCursor into @paramVal, @paramName, @paramType
if @@FETCH_STATUS = 0
set @completeCommand = @completeCommand + ' '
while @@FETCH_STATUS = 0
begin
print @completeCommand
-- verify the datatype is correct
set @tempParam = case @paramType
when 'int' then CAST (@paramVal as int)
when 'float' then CAST (@paramVal as float)
when 'nvarchar' then CAST (@paramVal as nvarchar)
else 'NULL'
end
set @completeCommand = @completeCommand + @paramName + ' = ' + @paramVal + ','
fetch next from ParameterCursor into @paramVal, @paramName, @paramType
end
close ParameterCurosr
deallocate ParameterCursor
Я пытаюсь проверить, что введенные пользователем данные соответствуют ожидаемому типу данных, прежде чем данные будут добавлены в командную строку. . Мы будем очень благодарны за любые отзывы о том, почему приведенный выше код не работает.
Ура,
Я получаю сообщение об ошибке «Ошибка преобразования типа данных nvarchar в float» при выполнении следующего
declare
@completeCommand nvarchar (max) = 'x'
,@paramVal nvarchar (100)
,@paramName nvarchar (100)
,@paramType nvarchar (100)
,@tempParam sql_variant
declare @parameterList table (
RowID int identity (1,1)
,ParameterValue nvarchar (100)
,ParameterName nvarchar (100)
,ParameterType nvarchar (100)
)
insert into @parameterList
values
('10', 'Param1', 'int')
,('test', 'Param2', 'nvarchar')
-- Process each parameter one at a time
declare ParameterCursor cursor fast_forward for
select ParameterValue, ParameterName, ParameterType
from @parameterList
order by RowID
open ParameterCursor
fetch next from ParameterCursor into @paramVal, @paramName, @paramType
if @@FETCH_STATUS = 0
set @completeCommand = @completeCommand + ' '
while @@FETCH_STATUS = 0
begin
print @completeCommand
-- verify the datatype is correct
set @tempParam = case @paramType
when 'int' then CAST (@paramVal as int)
when 'float' then CAST (@paramVal as float)
when 'nvarchar' then CAST (@paramVal as nvarchar)
else 'NULL'
end
set @completeCommand = @completeCommand + @paramName + ' = ' + @paramVal + ','
fetch next from ParameterCursor into @paramVal, @paramName, @paramType
end
close ParameterCurosr
deallocate ParameterCursor
Я пытаюсь проверить, что введенные пользователем данные соответствуют ожидаемому типу данных, прежде чем данные будут добавлены в командную строку. . Мы будем очень благодарны за любые отзывы о том, почему приведенный выше код не работает.
Ура, Джо