小编Net*_* Yo的帖子

函数还原sql语句

如何删除/移动/标记电子邮件时,如何像Gmail一样实现对MySQL数据库的撤消更改功能.

到目前为止,我有一个系统日志表,其中包含用户执行的确切sql语句.

例如,我正在尝试转换:

INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2')
Run Code Online (Sandbox Code Playgroud)

成:

DELETE FROM table WHERE id=1, column1='value1', column2='value2'
Run Code Online (Sandbox Code Playgroud)

是否有内置函数来执行此操作,如cisco路由器命令,如

(NO|UNDO|REVERT) INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2')
Run Code Online (Sandbox Code Playgroud)

也许我的方法是不正确的,我应该保存我的行的当前状态和更改的行,以回到它的原始状态?

就像是:

original_query = INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2')

executed_query = INSERT INTO table (id, column1, column2) VALUES (1,'change1', 'change2')
Run Code Online (Sandbox Code Playgroud)

后来变成:

INSERT INTO table (id, column1, column2) VALUES (1,'value1', 'value2') ON DUPLICATE KEY UPDATE
 column1=VALUES(column1), column2=VALUES(column2)
Run Code Online (Sandbox Code Playgroud)

但也许它不适用于新插入的行,或者如果我修改主键可能会导致麻烦,所以我宁愿让它们保持不变.

这是我的日志表:

CREATE TABLE `log` (
 `id` …
Run Code Online (Sandbox Code Playgroud)

php mysql sql database undo

5
推荐指数
1
解决办法
1666
查看次数

如何在 PLSQL 中使用 MEMBER OF

我见过有关此错误的问题,但要么调用外部存储,要么尝试使用不兼容的类型或使用变量。所以我设置了一个非常简单的示例,但仍然无法使其工作。

DECLARE 
TYPE mytype IS TABLE OF VARCHAR2(4) INDEX BY PLS_INTEGER;
mytable mytype;
BEGIN
  mytable((mytable.COUNT+1)) := 'COD1';
  mytable((mytable.COUNT+1)) := 'COD2';
  mytable((mytable.COUNT+1)) := 'COD3';
  mytable((mytable.COUNT+1)) := 'COD4';  
  --IF 'COD1' MEMBER OF mytable THEN DBMS_OUTPUT.PUT_LINE('We have the code'); END IF;
  FOR i IN 1..mytable.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE(mytable(i));
  END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

如果我运行它,我会得到这个:

COD1
COD2
COD3
COD4
Run Code Online (Sandbox Code Playgroud)

如果我取消注释 IF (我打算使用的),我会收到此错误。

PLS-00306: wrong number or types of arguments in call to MEMBER OF
Run Code Online (Sandbox Code Playgroud)

也许我没有正确使用它或者有什么问题。

我试图在循环中使用它,我将已使用的代码保存在“数组”中,然后给出一个代码,我需要知道它是否已被使用。我最初的解决方案是附加到像“.COD1..COD2”这样的字符串。并做了一个简单的 INSTR 但似乎不正确,我喜欢数组。我听说过那个函数(的成员)只要按照我认为应该的方式工作就可以完成我想要的事情。

你能告诉我如何正确使用,我做错了什么或者如何以更好的方式解决我的问题?

差不多了...我把它改成

-- Declare
TYPE mytype IS TABLE OF …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

4
推荐指数
2
解决办法
1万
查看次数

我可以跳过证书验证 oracle utl_http 吗?

我正在 pl/SQL 中开发一些连接到多个外部服务的应用程序,

例子:

declare
 utl_req         utl_http.req;
 utl_resp        utl_http.resp;
begin
-- This line in production for security, but takes forever to get authorized 
-- by oracle host provider :@
-- utl_http.set_wallet('file:/path/wallet', 'password');

-- In test env i would like something like
-- utl_http.set_option('CURLOPT_SSL_VERIFYHOST', false);
-- utl_http.set_option('CURLOPT_SSL_VERIFYPEER', false);
 utl_req := utl_http.begin_request('https://login.microsoftonline.com/...
/oauth2/token', 'POST', 'HTTP/1.1');-- Die
--...more code
end;
Run Code Online (Sandbox Code Playgroud)

输出:

ORA-29024: Certificate validation failure
Run Code Online (Sandbox Code Playgroud)

有没有办法命令 Oracle 忽略证书验证以进行测试,无需等待将证书添加到钱包的身份验证。

类似于 php

$curl_request = curl_init();
    curl_setopt($curl_request, CURLOPT_URL, 'https://login.microsoftonline.com/...
/oauth2/token');
    curl_setopt($curl_request, CURLOPT_POST, 1);
    // No thankyou …
Run Code Online (Sandbox Code Playgroud)

oracle curl plsql

3
推荐指数
1
解决办法
4998
查看次数

标签 统计

oracle ×2

plsql ×2

curl ×1

database ×1

mysql ×1

php ×1

sql ×1

undo ×1