在Oracle中:如何判断SQL查询是否会导致更改而不执行它?

前端之家收集整理的这篇文章主要介绍了在Oracle中:如何判断SQL查询是否会导致更改而不执行它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含sql语句的字符串.我想知道查询是否会修改数据或数据库结构,或者它是否只读取数据.有办法做到这一点吗?

更多信息:在我们的应用程序中,我们需要让用户输入SQL查询,主要是作为应用程序报告系统的一部分.应允许这些SQL查询数据库中读取他们喜欢的任何内容,但不应允许他们修改任何内容.没有更新,删除插入,表格丢弃,约束删除等.

截至目前,我只测试字符串中的第一个单词是否为“select”,但这太紧凑而且太不安全.

解决方法

为仅具有select权限的应用程序部分创建新用户.请记住,您还需要为“只读”用户将能够查看的所有表/视图创建同义词.

应用程序的“常规”部分仍然可以执行其他操作(插入,更新,删除).只是报告将使用只读用户.

正如Horacio所说,添加“包装”视图也是一个好主意/实践,这些视图只会暴露您想要公开的内容.某种“公共API”.如果您需要更改基础表并且不希望/不能将报告更改为所述表的新定义,这可以为您提供灵活性.然而,这可能被视为许多“额外工作”.

猜你在找的Oracle相关文章