如何在sql查询中使用变量

时间:2014-07-25 13:15:29

标签: sql oracle variables plsql

我有一个这样的查询(我将它放入一个字符串中以准备查询本身):

select r.id, 
       r.id_user,  
       r.date_pubblication,
       r.name,
       r.description, 
       r.type, 
       u.name as Uname 
from   resources r, 
       users u 
where  r.id_user=id_logged 

现在,select中的所有这些字段都是数据库表的字段。只有id_logged不是表的字段,而是通过这种方式定义的java变量:

User user = userService.getUserCurrent();
long id_logged = user.getId();

运行查询后返回的错误是

ORA-00904: "ID_LOGGED": invalid identifier

还有一点要说的是,当我通过给出值user.getId()定义id_logged时,会出现警告

- The value of the local variable id_logged is not used

你能解释一下我的错误吗?我可以正确运行此查询吗?

2 个答案:

答案 0 :(得分:0)

所以,如果我理解正确,你会产生这样的情感:

"select r.id, r.id_user,  r.date_pubblication,r.name, r.description, r.type, u.name as Uname from resources r, users u where r.id_user=id_logged"

作为字符串?

如果是这样 - 检查最后一个参数:r.id_user = id_logged。 这是一个字符串。并且您将 id_logged 声明为javascript变量。

如果是这样 - 您必须使用变量值加入查询字符串。 例如:

javascript:
    "query string" + id_logged

php:
    "query string" . id_logged

如果我理解你的问题,这应该对你有帮助。

答案 1 :(得分:0)

如果您的查询是Java字符串,则需要执行以下操作:

String id_logged = //Whatever you do to get the value of id_logged.
String query = "select r.id, "+
   "r.id_user,  "+
   "r.date_pubblication,"+
   "r.name,"+
   "r.description, "+
   "r.type, "+
   "u.name as Uname "+
   "from   resources r, "+
   "users u "+
   "where  r.id_user="+id_logged ;
//Now you can execute the query.

请注意,这很容易引入SQL。你应该用准备好的陈述做这种事情。