J'ai une procédure stockée insertvalue
avec ces trois paramètres:paramètre d'entrée passe comme nom de colonne pour mettre à jour une valeur de colonne dans la procédure stockée
@stdrollno int,
@sem int,
@IsCheck int,
@subjectname varchar(100),
@test varchar(100)
J'ai une table demo
où il y a table nommée defaulter où il y a une colonne
[Microprocessor th] varchar(50)
[Structured and Object Oriented Analysis and Design th] varchar(50)
dont la valeur je dois mettre à jour.
Donc dans ma procédure stockée insertvalue
, j'ai écrit ce code SQL:
if(@sem = 5)
BEGIN
BEGIN
declare @sql3 nvarchar(500);
set @sql3 = 'update TEdefaulters
set ['+CAST(@test as nvarchar(100))+'] = ['+CAST(@test as nvarchar(100))+'] + '+CAST(@IsCheck as nvarchar(100))+'
where stdrollno = ' +CAST(@stdrollno as nvarchar(100));
exec sp_executesql @sql3
END
BEGIN
update TEdefaulters
set total_theory = total_theory + CONVERT(INT, @ischeck)
where stdrollno = @stdrollno
END
BEGIN
update TEdefaulters
set total_attendance = total_attendance + CONVERT(INT, @ischeck)
where stdrollno = @stdrollno
END
BEGIN
update TEdefaulters
set theory_percentage = (cast((Select total_theory from TEdefaulters where [email protected]) as float)/(cast((Select total_theory from TEdefaulters where stdname='total') as float))) * 100
where [email protected]
END
BEGIN
update TEdefaulters
set attendance_percentage = (cast((Select total_attendance from TEdefaulters where [email protected]) as float) /(cast((Select total_attendance from TEdefaulters where stdname='total')as float))) * 100
where [email protected]
END
END
mais il ne fonctionne pas, il provoque une erreur Les valeurs dont les travaux:
exec inserttheoryattendance 5 , 5 , 1 , 'Microprocessor', 'Microprocessor th'
la valeur qui ne fonctionne pas est
exec inserttheoryattendance 5 , 5 , 1 , 'Structured and Object Oriented Analysis and Design', 'Structured and Object Oriented Analysis and Design th'
Impossible de convertir nvarchar int
Pourquoi déclarez-vous @sql comme int? – Uueerdo
Copie possible de [SQL dynamique ne convertissant pas VARCHAR en INT (ne devrait pas de toute façon)] (https://stackoverflow.com/questions/15684701/dynamic-sql-not-converting-varchar-to-int-shouldnt-anyway) –
essayé cette logique, il ne fonctionne pas la conversion ne fonctionne pas – Prakash