O que faz o símbolo " @ " em 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
Estava a pensar o que o " @ " faz em frente ao custID? É apenas uma forma de referenciar o custID da tabela a ser selecionada?
8 answers
O @CustID significa que é um parâmetro que você irá fornecer um valor para mais tarde no seu código. Esta é a melhor forma de proteger contra a injecção de SQL. Crie sua consulta usando parâmetros, em vez de concatenar strings e variáveis. O motor de banco de dados coloca o valor do parâmetro onde está o item de substituição, e não há nenhuma chance para a injeção de SQL.
@ é usado como prefixo que denota os nomes dos parâmetros dos procedimentos e funções armazenados, assim como os nomes das variáveis
Por isso, poderia definir qual o valor do @custID está dentro desta pesquisa seleta ou antes de fazer a pesquisa?
Algo assim?SET @custID = '1';
É um parâmetro que precisas de definir. para prevenir a injecção de SQL, deve passar todas as variáveis como parâmetros.
Você pode ser usado para a sintaxe do MySQL: o Microsoft SQL @
é o mesmo que o Mysql's ?
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]
É assim que o @
funciona.
@
seguido por um número são os parâmetros na ordem em que estão listados em uma função.