SQL中的“@”符号是做什么的?
我正在浏览问题,并注意到这一点:
SELECT prodid, issue FROM Sales WHERE custid = @custid AND datesold = SELECT MAX(datesold) FROM Sales s WHERE s.prodid = Sales.prodid AND s.issue = Sales.issue AND s.custid = @custid
我想知道custID前面的“@”是什么? 这只是从被选表中引用custID的一种方法吗?
@CustID表示这是一个参数,您将在代码中稍后提供一个值。 这是防止SQL注入的最好方法。 使用参数创build查询,而不是连接string和variables。 数据库引擎将参数值放置在占位符所在的位置,SQL注入的机会是零。
@用作表示存储过程和函数参数名称的前缀,以及variables名称
那么你会设置什么@ custID的价值是在这个select查询或之前你做的查询?
类似的东西?
SET @custID = '1';
它是您需要定义的一个参数。 为了防止SQL注入,您应该将所有variables作为parameter passing。
你可能习惯了MySQL的语法:Microsoft SQL @
和MySQL的一样?
你所说的是参数化查询的写法。 '@'只是表示这是一个参数。 您可以在执行过程中添加该参数的值
eg: sqlcommand cmd = new sqlcommand(query,connection); cmd.parameters.add("@custid","1"); sqldatareader dr = cmd.executequery();
publish data where stoloc = 'AB143' | [select prtnum where stoloc = @stoloc]
这是@
如何工作。
@
后跟一个数字就是参数在函数中列出的顺序。