Что символ "@" делает в SQL? - PullRequest
       12

Что символ "@" делает в SQL?

66 голосов
/ 12 декабря 2008

Я просматривал вопросы и заметил это:

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 из выбранной таблицы?

Ответы [ 7 ]

49 голосов
/ 12 декабря 2008

@CustID означает, что это параметр, который вы будете указывать для дальнейшего использования в своем коде. Это лучший способ защиты от SQL-инъекций. Создайте свой запрос, используя параметры, а не объединяя строки и переменные. Механизм базы данных помещает значение параметра туда, где находится заполнитель, и вероятность внедрения SQL-кода равна нулю.

28 голосов
/ 12 декабря 2008

@ используется в качестве префикса, обозначающего имена хранимых процедур и параметров функций, а также имена переменных

2 голосов
/ 12 декабря 2008

Вы можете использовать синтаксис MySQL: Microsoft SQL @ совпадает с ?

MySQL *
2 голосов
/ 12 декабря 2008

Это параметр, который вам нужно определить. чтобы предотвратить SQL-инъекцию, вы должны передать все свои переменные в качестве параметров.

1 голос
/ 12 декабря 2008

То, о чем вы говорите, - это способ написания параметризованного запроса. «@» просто означает, что это параметр. Вы можете добавить значение для этого параметра в процессе выполнения

eg:
sqlcommand cmd = new sqlcommand(query,connection);
cmd.parameters.add("@custid","1");
sqldatareader dr = cmd.executequery();
0 голосов
/ 26 июля 2017

@, за которыми следует число, - это параметры в том порядке, в котором они перечислены в функции.

0 голосов
/ 30 июля 2012
publish data where stoloc = 'AB143' 
|
[select prtnum where stoloc = @stoloc]

Так работает @.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...