为什么我必须使用:而不是@来传递我的WHERE SQL语句中的参数?

时间:2015-01-01 11:38:28

标签: sql oracle visual-studio-2012

提前谢谢你:) 我使用SQL Plus作为我的数据库,使用Visual Studio 2013作为我的前端。在任何地方都有WHERE语句为

WHERE FNAME = @FNAME

将参数传递给

this.DataTable1TableAdapter.Fill(this.DataSet2.DataTable1,fname1.Text);

但除非我做

,否则它对我不起作用
WHERE FNAME = :FNAME

当我在Visual Studio中构建查询但无法在线查找文档时,我想添加过滤器。之前我使用过mySQL,在PHP / HTML中使用@时,我知道如何使用简单的过滤器。 示例我想使用通配符%_:

SELECT * FROM Customers 
WHERE (FNAME Like @FNAME + '%')

但是我在下面尝试了同样的事情而没有运气,因为我不知道为什么或规则:作为参数

SELECT * FROM Customers
WHERE (FNAME Like :FNAME + '%')

有人能指出我正确的方向吗?如果您需要更多信息,请告诉我。 谢谢,我为识别SQL语句的格式道歉。

1 个答案:

答案 0 :(得分:0)

在PHP中,尝试类似:

$param = "myname%";
$stmt = $db->prepare("SELECT * FROM Customers WHERE FNAME LIKE :FNAME");
$stmt->bind_param("FNAME", $param);

因此它将被评估为SELECT * FROM Customers WHERE FNAME LIKE 'myname%'

简而言之,在传递参数时,使用通配符传递它,并使用命名参数保留SELECT SQL clean。