唐山烟花爆竹厂爆炸,笔夫博客,游览车遭黑熊围堵
正在看的oracle教程是:oracle如何直接运行os命令(下)。 exec sql whenever sqlerror continue; void
sql_error()
{
char msg_buffer[512];
int msg_length;
int buffer_size = 512;
exec sql whenever sqlerror continue;
sqlglm(msg_buffer, &buffer_size, &msg_length);
printf("daemon error while executing:\n");
printf("%.*s\n", msg_length, msg_buffer);
printf("daemon continuing.\n");
}
main()
{
exec sql whenever sqlerror do connect_error();
exec sql connect :uid;
printf("daemon connected.\n");
exec sql whenever sqlerror do sql_error();
printf("daemon waiting...\n");
while (1) {
exec sql execute
begin
/*接收deamon发来的字符*/
:status := dbms_pipe.receive_message('daemon');
if :status = 0 then
/*取出字符*/
dbms_pipe.unpack_message(:command);
end if;
end;
end-exec;
if (status == 0)
{
command.arr[command.len] = '\0';
/*如果是stop,该进程就退出*/
if (!strcmp((char *) command.arr, "stop"))
{
printf("daemon exiting.\n");
break;
}
else if (!strcmp((char *) command.arr, "system"))
{
exec sql execute
begin
dbms_pipe.unpack_message(:return_name);
dbms_pipe.unpack_message(:value);
end;
end-exec;
value.arr[value.len] = '\0';
printf("will execute system command '%s'\n", value.arr);
/*运行os命令*/
status = system(value.arr);
exec sql execute
begin
dbms_pipe.pack_message('done');
dbms_pipe.pack_message(:status);
:status := dbms_pipe.send_message(:return_name);
end;
end-exec;
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Oracle字符串函数length、upper、lower、initcap、 concat、instr、replace
网友评论