更新语句 PLSQL

Posted

技术标签:

【中文标题】更新语句 PLSQL【英文标题】:Update statement PLSQL 【发布时间】:2020-12-16 14:53:19 【问题描述】:

好吧,我正在编写一个程序,其中有一个立即执行。这是我的代码。

  PROCEDURE upd_row(
  table_name VARCHAR2,
  set_values VARCHAR2,
  conditions VARCHAR2 := NULL)IS 
  BEGIN 
  EXECUTE IMMEDIATE 'UPDATE '|| table_name || 'SET' || set_values|| ' WHERE ' || conditions ||')';
  END;

如您所见,我有 3 个参数。这就是我所说的代码。

table_pkg.upd_row('my_contacts','name=''Nancy Greenberg''','id=2'); 

我得到的错误是:'缺少 SET 关键字'

【问题讨论】:

【参考方案1】:

错误是当您将SET 关键字连接到set_valuestable_name 时,您不会在它们之间留下空格,因此这会将所有这些单词连接在一起。

所以你的代码应该是这样的:

EXECUTE IMMEDIATE 'UPDATE '|| table_name || ' SET ' || set_values|| ' WHERE ' || conditions ;

顺便说一句,考虑在立即执行结束时删除')',因为它会导致语句失败,因为没有任何打开的(

【讨论】:

现在我得到这个错误:00955.00000 - “名称已被现有对象使用” 如果没有看到所有代码实际上很难知道哪个对象已经存在,但我的猜测是您正在创建的过程 upd_row 的名称已经存在,请在创建时尝试创建或替换如果您想更新或创建该过程。

以上是关于更新语句 PLSQL的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL批量更新语句

更新语句 PLSQL

plsql表更新后视图未更新

PLSQL中批量更新数据

PLSQL 循环需要大量时间来执行

PLSQL——01PLSQL语句的结构