回答
您可以在存储过程中构建动态sql,然后执行它。我不会推荐这样做,但它是一种选择。
如果你确实走这条路线,确保你给this article一个彻底的阅读。
更新:
声明 - 上述文章特定于SQL Server。尽管如此,其中一些可能仍然适用(我不太了解Oracle如何以某种方式说出)。
我建议看一看this article以获取有关Dynamic SQL的Oracle特定信息。
如果你有很多列,您可以通过搜索,然后构建一个动态SQL语句会更容易些,但......你不必担心SQL注入
OR
,如果你知道的列,将搜索,创建为每个列的可选参数,默认设置为NULL值分配给他们
编辑:在SQL Server中添加样本,但很容易移植到甲骨文
CREATE PROCEDURE dbo.test
(
@col1 varchar(50) = null,
@col2 int = null,
@col3 datetime = null
)
AS
SELECT col1, col2, col3
FROM someTable
WHERE (@col1 IS NULL OR col1 = @col1)
AND (@col2 IS NULL OR col2 = @col2)
AND (@col3 IS NULL OR col3 = @col3)
谢谢。我知道将被搜索的列,但我不知道每列有多少个参数。例如对于col1,可能有2个参数。这可能吗?再次感谢。 – 2011-06-16 20:57:03
这是可能的,但变得更加困难。我们处理它的方式是确定哪些参数可能具有潜在的多个值并传入csv字符串。我们有一个用户定义的函数,它解析了csv并返回了一个表,然后我们进行了左连接。但在我们的例子中,只有一个参数接受多个值,因此更容易维护 – clyc 2011-06-17 03:58:55
- 1. 动态MySQL在哪里子句在存储过程
- 2. SQL IN子句在存储过程中
- 3. SQL Server在哪里存储存储过程代码?
- 4. SQL存储过程,应用Where子句
- 5. 使用存储过程的'where子句'中的未知列
- 6. MySQL在哪里放置存储过程?
- 7. 在哪里可以找到SQL Server中的存储过程msdb.dbo.sp_send_dbmail
- 8. Prestashop 1.7,通知存储在哪里?
- 9. LINQ to SQL查询在哪里子句
- 10. mysql服务器在哪里存储存储过程代码?
- 11. SQL Server存储过程语句使用表子句
- 12. SQL:在存储过程中的子句:如何传递值
- 13. 如何在SQL Server的SELECT子句中执行存储过程
- 14. 在SQL Server中的IN子句中调用存储过程?
- 15. 在SQL Server中使用条件Where子句的存储过程
- 16. VARCHAR在SQL IN子句的参数存储过程
- 17. SQL Server在哪里存储DTS包?
- 18. 使用存储过程时where子句中的未知列'模板'
- 19. sql case语句在哪里?
- 20. SQL存储过程选择语句
- 21. SQL Server存储过程删除语句
- 22. 存储过程的where子句参数
- 23. Mysql存储过程,其中子句
- 24. 将参数添加到存储过程的SQL where子句column_name
- 25. SQL Server 2005:从WHERE子句中调用存储过程
- 26. 可选SQL 2008存储过程中的子句/参数?
- 27. 参数化WHERE子句中的SQL Server存储过程
- 28. 变量传递到SQL Server存储过程,where子句
- 29. 存储过程中的SQL变量ORDER BY子句
- 30. .NET“独立存储”存储在哪里?
这是什么DBMS? – 2011-06-16 20:37:22
[传递SQL存储过程完整的WHERE子句](http://stackoverflow.com/questions/3085756/passing-sql-stored-procedure-entirety-of-where-clause) – 2011-06-16 20:38:05
@Abe Oracle。 – 2011-06-16 20:39:05