当前位置:首页 » 服务存储 » 设置存储过程输出日志
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

设置存储过程输出日志

发布时间: 2022-05-08 23:55:20

Ⅰ oracle怎么查询存储过程有没有被执行过

1、在存储过程中加一个输出参数,执行完存储过程后,判断输出参数的值; 2、查看存储过程中处理数据后,你要的效果达到没有。

sqlserver2000将存储过程的内容输出到日志文件

1、按照你的思路(一个存储过程是将一张表的数据同步到另一张表)来做的话,只能在存储过程后增加一个Log的表,写入此次同步的情况,然后程序再获得同步的情况显示给客户。
2、其实数据库同步问题,建议你还是用SQL的复制与分发功能,此功能绝对保障数据同步的准确性

Ⅲ 创建oracle存储过程,要求把一个表的数据导入另一个表中然后删除原表且要有异常处理和日志输出

又是你呀,我再把代码改改,很简单,代码如下
create or replace procere test
is
begin
--两个表字段一样
insert into 表名1 select * from 表名2;
--字段不一样
insert into 表名1(字段1,字段2,字段3) select 字段1,字段2,字段3 from 表名2;
--删除原表数据
delete 表名2
或者
TRUNCATE TABLE 表名2
COMMIT;
WHEN OTHERS THEN --当运行出现异常
dbms_output.put_line(SQLERRM(SQLCODE));--输出到控制台
end

Ⅳ 如何在存储过程执行中,利用dbms

dbms_output.put_line本身就是这么设计、这么用的,要实时输出日志,可以把日志通过UTL_FILE包写到文件
中。
dbms_output在10g之前能输出的最大字符是1000000,单行长度是255,
dbms_output在10g中输出和单行限制都被取消了.

Ⅳ oracle中怎么用存储过程将的存储过程的执行时间返回出去。

可以在日志表中加一个运行时间字段,可以在程序运行之前设定一定变量值为sysdate,程序运行结尾出一个变量2 sysdate , 两个变量相减就可以得到过程运行时间.

begin
v_date1:= sysdate;
...
v_date2:=sysdate;
v_run_num=v_date2-v_dat1;

insert into 日志表(run_num_time) values(v_run_num);
commit;

Ⅵ oracle存储过程如何输出信息

可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。

编写存储过程:

create or replace procere test_pro(in_num number)

as

M number;

begin

M := in_num;

if 0 < M then

dbms_output.put_line('输出SQL语句1');

elsif M < 3 then

dbms_output.put_line('输出SQL语句2');

else

dbms_output.put_line('nothing');

end if;

end;

(6)设置存储过程输出日志扩展阅读;

存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。

Ⅶ ORACLE 的存储过程中如何输出日志文件

直接利用UTL_FILE包来生成文件
UTL_FILE.fopen 创建文件
UTL_FILE.put 写入数据
UTL_FILE.new_line 换行
UTL_FILE.fclose 关闭文件

Ⅷ 啥叫“存储过程”啊

存储过程
存储过程是保存在数据库中的专门进行数据操作的代码过程。存储过程通常与触发器结合使用,来控制数据的完整性。在打开数据库时,存储过程被自动加载到内存中,可以象其他过程文件一样进行调用。

1.建立存储过程
可以在项目管理器中选择建立或修改存储过程。在项目管理器的Data选项卡中选定Stored Proceres节点,然后单击New、Add或Modify按钮都将打开存储过程文本编辑器,如图7-12所示。

也可以在首先打开数据库的情况下,执行MODIFY STRUCTURE命令打开存储过程文本编辑器。如:

OPEN DATABASE dbMyData
MODIFY STRUCTURE

一个数据库的所有存储过程包含在一个文件中,过程使用PROCEDURE语句声明,这与一般的过程文件是完全一样的。

例如,下面为数据库建立了一个名为NewStuId的存储过程,该过程为学生档案表的StuId字段根据当前StuId中的最大值自动生成一个编号,并保存到StuId字段中中,如图7-13所示。

图7-12 可以在项目管理器选择建立或修改存储过程

图7-13 NewStuId存储过程

执行下面的代码,将在学生档案表中添加一条新记录,并为StuId字段赋值。

APPEND BLANK

NewStuId() &&执行存储过程

需要注意的是,如果准备存储过程用于表的触发器,则不能包含如图7-13中所示的CALCULATE、GO和REPLACE这些引起记录移动的命令。

2.从文本文件中导入存储过程
可以使用APPEND PROCEDURES命令将文本文件中的存储过程以编程的方式添加到当前数据库中,其语法格式如下:

APPEND PROCEDURES FROM FileName [AS nCodePage] [OVERWRITE]

其中,FileName指定保存存储过程的文本文件名称;AS nCodePage指定要追加其存储过程的文本文件要转换的代码页;OVERWRITE指定用文本文件中的过程改写数据库中的当前存储过程,如果不包含此参数,文本文件中的存储过程将追加到当前存储过程中。

需要注意的是,在使用该命令前,数据库必须以独占方式打开并设置为当前数据库。

3.将存储过程导出到文本文件中
可以使用COPY PROCEDURES命令将当前数据库中的存储过程导出到文本文件,其语法格式如下:

COPY PROCEDURES TO FileName [AS nCodePage] [ADDITIVE]

其中,FileName指定文本文件名,存储过程将被复制到此文本文件中;AS nCodePage指定文本文件的代码页;ADDITIVE指定将存储过程追加到指定文本文件尾,如果若省略该参数,则覆盖文本文件的内容。

4.查看数据库中的存储过程
可以使用DISPLAY PROCEDURES或LIST PROCEDURES命令显示当前数据库中的存储过程名称,二者的功能基本相同。其中,DISPLAY PROCEDURES命令的语法格式如下:

DISPLAY PROCEDURES [TO PRINTER [PROMPT] | TO FILE FileName] [NOCONSOLE]

其中,TO PRINTER [PROMPT]指定将显示结果输出到打印机中,包含PROMPT子句可以在打印开始前显示一个打印对话框;TO FILE FileName指定将显示结果输出到FileName指定的文件中;NOCONSOLE指定不向Visual FoxPro主窗口或活动的用户自定义窗口输出。

例如,下面的代码将显示dbMyData数据库中的存储过程名称。

OPEN DATABASE dbMyData

DISPLAY PROCEDURES

7.3.6 设置触发器
触发器是绑定在表上的表达式,当表中的任何记录被指定的操作命令修改时,触发器被激发。当数据修改时,触发器可执行数据库应用程序要求的任何其他操作。

触发器作为特定表的属性来创建和存储。如果从数据库中移去一个表,则同时删除和该表相关联的触发器。从前面的表7-7可以看出,触发器是在进行了其他所有检查之后(如有效性规则、主关键字的实施,以及NULL值的实施)被激活,位于所有约束的最后面。并且与字段级规则和记录级规则不同,触发器不对缓冲数据起作用。

1.建立触发器
可以使用表设计器或CREATE TRIGGER命令来创建触发器。对于每个表,可为插入、更新及删除3个事件各创建一个触发器。在任何情况下,一个表最多只能有3个触发器。触发器必须返回“真”(.T.)或“假”(.F.),只有返回“真”时操作才能继续进行。能够激发触发器的命令如表7-9所示。

表7-9 能够激发触发器的命令

触发器
命令

删除触发器
DELETE命令

插入触发器
APPEND FROM、APPEND FROM ARRAY、APPEND BLANK、IMPORT、INSERT-SQL和RECALL命令

序表

触发器
命令

更新触发器
GATHER、REPLACE、REPLACE FROM ARRAY和UPDATE SQL命令

需要注意的是,不能对有触发器的表使用INSERT命令,但是可以使用INSERT-SQL命令;发出PACK或ZAP不会激发任何触发器;如果更新具有删除标记的记录,不会激发触发器;如果表使用了缓冲模式,只有当使用TABLEUPDATE( )函数进行发送更新时,才激发更新触发器。

下面是在dbMyData数据库中建立的4个存储过程。其中,InsertData用于在添加记录时显示一个“新增记录…”提示;UpdateData用于在记录更新时自动将更新记录写入到一个日志表tblStudent2中,来记录用户对学生档案表所做的修改;DeleteData用于在删除记录时显示一个信息框,询问用户是否确认删除记录;WriteLog用于写入日志,该过程可以接收来自UpdateData过程的参数传入值。

PROCEDURE WriteLog

PARAMETERS lcStuId,lcStuName,lcClassName,ldEnterDate,lnChinese,lnMaths,lnTotal

*!* 将变动写入到日志表tblStuden2中

INSERT INTO tblStudent2 (StuId,StuName,ClassName,EnterDate,Chinese,Maths,Total) ;

VALUES (lcStuId,lcStuName,lcClassName,ldEnterDate,lnChinese,lnMaths,lnTotal)

PROCEDURE InsertData

WAIT WINDOW "新增记录..." NOWAIT TIMEOUT 2

RETURN .T.

PROCEDURE UpdateData

WAIT WINDOW "正在将变动写入日志表..." NOWAIT TIMEOUT 2

WriteLog(StuId,StuName,ClassName,EnterDate,Chinese,Maths,Total)

RETURN .T.

PROCEDURE DeleteData

IF MESSAGEBOX("确认删除该记录吗?",4+32," 提示")=6

RETURN .T.

ELSE

RETURN .F.

ENDIF

打开表设计器,在Table选项卡的Insert trigger、Update trigger和Delete trigger文本框中分别输入InsertData()、UpdateData()和DeleteData(),如图7-14所示。

图7-14 为表建立触发器

也可以使用CREATE TRIGGER命令为表建立触发器表达式,该命令的语法格式如下:

CREATE TRIGGER ON TableName FOR DELETE | INSERT | UPDATE AS lExpression

其中,TableName是要建立触发器的表名称,lExpression是触发器表达式。例如,下面使用该命令为学生档案表建立了与图7-14同样的触发器表达式。

OPEN DATABASE dbMyData

CREATE TRIGGER ON 学生档案表 FOR INSERT AS InsertData() &&建立插入触发器

CREATE TRIGGER ON 学生档案表 FOR UPDATE AS UpdateData() &&建立更新触发器

CREATE TRIGGER ON 学生档案表 FOR DELETE AS DeleteData() &&建立删除触发器

2.删除触发器
可以在表设计器的Table选项卡中删除触发器或使用DELETE TRIGGER命令从数据库表中删除触发器。其中,DELETE TRIGGER命令的语法格式如下:

DELETE TRIGGER ON TableName FOR DELETE | INSERT | UPDATE

其中,TableName是要删除触发器的表名称。

例如,下面的代码将删除学生档案表中的插入触发器。

DELETE TRIGGER ON 学生档案表 FOR INSERT

3.修改触发器
可以在表设计器的Table选项卡中或者使用CREATE TRIGGER命令来修改触发器。使用命令修改触发器与建立触发器时相同。

Ⅸ DB2存储过程执行中怎么打印日志

print "a=92"

Ⅹ SQL Server 2008 R2存储过程中怎么输出调试日志信息

使用PRINT一般是写程序时观察中间结果,对于你说的这种情况,可以直接用SELECT输出结果,在存储过程里也可以这样。如果是在函数或者触发器里,可以建个测试表,如果是表值函数则可以定义一个表变量。

如果一定要print,那么这样吧:
delcare @number int
declare @course nvarchar(30) --for example
select @number=number,@course=course from choice where studentnumber = '20100001'
print @number
print @course
这是楼上的朋友的劳动成果,望勿见怪

如果一定要PRINT全部的,那么用游标吧:

declare @info varchar(200)
declare @curs cursor
set @curs=cursor scroll dynamic
for
select 'number='+convert(varchar(20),number)+'; course='+convert(varchar(20),course) from choice where sex='F'
open @curs
fetch next from @curs into @info
while(@@fetch_status=0)
begin
print @info
fetch next from @curs into @info
end