存储过程已编译
1. 什么是存储过程有什么优点
存储过程是事先经过编译并存储在数据库中的一段sql语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
优点:
1、重复使用:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性:参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
(1)存储过程已编译扩展阅读:
存储过程的缺点:
1、更改比较繁琐:如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐。
2、可移植性差:由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则需要将业务逻辑封装在不特定于 RDBMS 的中间层中。
2. 存储过程经过编译保存在数据库中这句话对吗
这句话没有问题啊
存储过程在创建时就在数据库服务器上进行了编译并存储在数据库中了,存储过程运行要比单个的SQL语句块要快。并且在调用时只需要提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、减轻网络负担。所以在项目中会选择将一些复杂的sql业务逻辑转用存储过程来实现以提高系统的性能
3. 存储过程一直报错 但是编译成功了 也没有错 调用时一直不成功报错
下面是问题:
Oraclede 环境中,客户那边提出,执行存储过程时出错,信息:DBCustomException: ORA-00900: invalid SQL statement
关于这个问题之前也遇到过,一直找不到原因,没解决,时好时坏,,由于客户大部分是SQL Server,也就没太在意,现在终于麻烦来了。
我用自己创建的用户,通过P/L SQL 登陆,执行以下语句
--创建表
create table ttt
(
aa varchar(20)
)
--创建存储过程
CREATE OR REPLACE PROCEDURE myproc
AS BEGIN
select * from ttt;
END
--执行
exec myproc
执行存储过程时,开始报错:ORA-00900:无效SQL语句 (上面那个错误的中文版-_-!)
这时候看右边的存储过程如下,有个红叉,
4. pgadmin4 编译存储过程
我知道利用c++语句编译储存
1)更改数据库目录下的postgresql.conf,加入如下红色语句:
#shared_preload_libraries = '' # (change requires restart)(这个系统默认下是注释掉的,在这句下面加入下面语句)
shared_preload_libraries = '$libdir/plugins/plugin_debugger'(这是新加入的)
2)重新启动pg服务
3)在要进行调试的数据库里执行pldbgapi.sql文件,这个文件在你pg安装目录的share/postgresql/contrib/下面
调试pg的function
1)打开pgadmin4,打开你要调试的数据库,在你要调试的function上右击,这时你会发现多了一项Debugging,占击子项中的debug就可对function进行调试了。
5. PLSQL修改了存储过程如何编译保存
如果是在plsql developer中修改的,可以直接点那个齿轮图标,或者F8即可编译。
如果是在sqlplus中,那就敲入修改后的过程代码(create or replace procere...),最后以/结尾运行即可。
6. 关于sqlserver存储过程的编译的问题
只编译一次。
在发布存储过程时就编译一次,页面上只要调用就可以,两次打开就是调用两次存储过程
7. 我在PL/SQL Developer 上写的存储过程,已经编译了,为何执行不了,里边的操作都没实现到,求高手解助。
你的存储过程能执行? 建议你先到命令行下执行下,show error 把错误先改掉,现在就有好多错误了。。
8. oracle存储过程提示编译完成但存在错误,如何查看错误
1、首先打开PL/SQL Developer软件,新建sql窗口。