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] 

这是@如何工作。

@后跟一个数字就是参数在函数中列出的顺序。