Sử dụng truy vấn được tham số hóa với sp_executesql
thủ tục:
DECLARE @val1 VARCHAR(20)= '500';
DECLARE @val2 VARCHAR(20)= '300';
DECLARE @Oper VARCHAR(20)= '>';
DECLARE @query NVARCHAR(MAX);
DECLARE @Flag INT= 0;
SET @query = 'if ' + @val1 + @Oper + @val2 + ' set @Flag=1';
DECLARE @ParamDefs NVARCHAR(MAX) = N'@Flag int output'
EXEC sp_executesql @query, @ParamDefs, @Flag OUTPUT
PRINT @Flag;
Đồng thời sửa một số lỗi:
-
declare @val1 varchar=100;
Kích thước mặc định sẽ là1
và@val1
được khởi tạo bằng*
không phải100
. Xem Tại sao ép / chuyển đổi từ int trả về một dấu hoa thị để biết chi tiết. - Bạn không cần truyền tới
int
bên trong truy vấn động.