存储过程里如何调用SQL脚本文件

hzj19800817 2009-04-30 12:10:05
如题,的命令符下sql>可以执行@c:\sql.sql命令来执行脚本文件,如果写到存储过程里如何写?
...全文
396 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
welyngj 2009-04-30
  • 打赏
  • 举报
回复
copy from an site:
SQL>! cat /tmp/test.sql
dmbs_output.put_line('Test');

SQL>create or replace procedure test_proc
2 is
3 begin
4 @/tmp/test.sql
5 end;
6 /

Procedure created.

SQL> select text from dba_source
2 where name = 'TEST_PROC';

TEXT
----------------------------------------
create or replace procedure test_proc
is
begin
dmbs_output.put_line('Test');
end;

SQL> set serveroutput on
SQL> exec test_proc
Test

PL/SQL procedure successfully completed.
Megan2008 2009-04-30
  • 打赏
  • 举报
回复
用游标
hzj19800817 2009-04-30
  • 打赏
  • 举报
回复
c:\sql.sql里的内容是insert语句,在命令符下可以执行sql>@c:\sql.sql来进行批量插入数据,我意思是怎么把这个命令入到存储过程里,c:\sql.sql作为参数传入来执行批量插入.
Megan2008 2009-04-30
  • 打赏
  • 举报
回复
存储过程中不能直接出现select,update,delete这样的语句,需要用双引号引起来,其它的都差不多的
,你看自己需要做什么才能看怎么操作的阿
zhangyong369 2009-04-30
  • 打赏
  • 举报
回复
怪得很,有时能成功,再来就不行了
光义 2009-04-30
  • 打赏
  • 举报
回复


这样写有意义吗?
大哥...为什么要这么做啊...
写在文件里面导入脚本操作..方便了?
qiyifei0924 2009-04-30
  • 打赏
  • 举报
回复
学习
welyngj 2009-04-30
  • 打赏
  • 举报
回复
procedure里直接select * from 肯定抱错的。。
gisinfo 2009-04-30
  • 打赏
  • 举报
回复
我测试怎么报错?????????
SQL> get c:\sql.sql
1* select * from tabs
SQL> get c:\exec.sql
1 create or replace procedure test_proc
2 is
3 begin
4 @c:\sql.sql
5* end;
SQL> @c:\exec.sql
6 /

警告: 创建的过程带有编译错误。

SQL> get c:\exec.sql
1 create or replace procedure test_proc
2 is
3 begin
4 @c:\sql.sql
5* end;
SQL> @c:\exec.sql

警告: 创建的过程带有编译错误。

SQL> exec test_proc
BEGIN test_proc; END;

*
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 7 列:
PLS-00905: 对象 SIPDB.TEST_PROC 无效
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
welyngj 2009-04-30
  • 打赏
  • 举报
回复
把procedure的语句放在一个文件里就不会抱错了。。
welyngj 2009-04-30
  • 打赏
  • 举报
回复
SQL> get c:\sql.sql
1* insert into wyj values(1);
SQL> get c:\exec.sql
1 create or replace procedure test_proc
2 is
3 begin
4 @c:\sql.sql
5* end;
SQL> @c:\exec.sql

Procedure created.

SQL> exec test_proc

PL/SQL procedure successfully completed.

SQL> select * from wyj
2 ;

A
----------
1
1
1
welyngj 2009-04-30
  • 打赏
  • 举报
回复
after testing again,Pass

SQL> get f:\dbms.sql
1* insert into wyj values(1);
SQL> get f:\proc.sql
1 create or replace procedure test_proc
2 is
3 begin
4 @f:\dbms.sql
5* end;
SQL> @f:\proc.sql

Procedure created.

SQL> exec test_proc

PL/SQL procedure successfully completed.

SQL> select * from wyj;

A
----------
1
1

hzj19800817 2009-04-30
  • 打赏
  • 举报
回复
搞不懂了,我这里一直就没有弄通过
welyngj 2009-04-30
  • 打赏
  • 举报
回复
奇怪,第一次试成功了,后来都没有成功。。。
anergl 2009-04-30
  • 打赏
  • 举报
回复
应该是不行,在shell里执行吧。sqlplus和pl/sql是不一样的
hzj19800817 2009-04-30
  • 打赏
  • 举报
回复
create or replace procedure test_proc
is
begin
@c:\sql.sql;

end;

Compilation errors for PROCEDURE CS.TEST_PROC
执行时就报以下错误
Error: PLS-00103: Encountered the symbol "@" when expecting one of the following:

begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe
Line: 4
Text: @c:\sql.sql;
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧