Plsql PL/SQL更新——不更新

Plsql PL/SQL更新——不更新,plsql,sql-update,Plsql,Sql Update,我正在使用一个程序 CREATE OR REPLACE PROCEDURE update_rec( page_id IN SSC_Page_Map.Page_ID_NBR%TYPE, page_type IN SSC_Page_Map.Page_Type%TYPE, page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE) IS BEGIN UPDATE SSC_Page_Map SET Page_Type = page_ty

我正在使用一个程序

CREATE OR REPLACE PROCEDURE update_rec(
    page_id   IN SSC_Page_Map.Page_ID_NBR%TYPE,
    page_type IN SSC_Page_Map.Page_Type%TYPE,
    page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)
IS
BEGIN
  UPDATE SSC_Page_Map
  SET Page_Type     = page_type,
    Page_Dcpn       = page_dcpn
  WHERE Page_ID_NBR = page_id;
  COMMIT;
END;

更新我的数据库表行。我确认程序执行正确,但没有看到更新。我已注释掉更新,以确认我有修改数据库的权限,并且修改成功。

SET Page\u Type=Page\u Type
使用当前列值更新列

PL/SQL程序中的可见性规则是列名优先于参数名。给你的参数一个不同的名字,一切都会好起来的。一种常见的编码惯例是在参数前加上
p
,以将其标识为参数:

CREATE OR REPLACE PROCEDURE update_rec(p_page_id IN SSC_Page_Map.Page_ID_NBR%TYPE, 
                                       p_page_type IN SSC_Page_Map.Page_Type%TYPE, 
                                       p_page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)

IS
BEGIN
   UPDATE SSC_Page_Map 
       SET Page_Type = p_page_type, 
           Page_Dcpn = p_page_dcpn 
   WHERE Page_ID_NBR = p_page_id;
   COMMIT;
END;

SET Page\u Type=Page\u Type
使用当前列值更新列

PL/SQL程序中的可见性规则是列名优先于参数名。给你的参数一个不同的名字,一切都会好起来的。一种常见的编码惯例是在参数前加上
p
,以将其标识为参数:

CREATE OR REPLACE PROCEDURE update_rec(p_page_id IN SSC_Page_Map.Page_ID_NBR%TYPE, 
                                       p_page_type IN SSC_Page_Map.Page_Type%TYPE, 
                                       p_page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)

IS
BEGIN
   UPDATE SSC_Page_Map 
       SET Page_Type = p_page_type, 
           Page_Dcpn = p_page_dcpn 
   WHERE Page_ID_NBR = p_page_id;
   COMMIT;
END;

SET Page\u Type=Page\u Type
使用当前列值更新列

PL/SQL程序中的可见性规则是列名优先于参数名。给你的参数一个不同的名字,一切都会好起来的。一种常见的编码惯例是在参数前加上
p
,以将其标识为参数:

CREATE OR REPLACE PROCEDURE update_rec(p_page_id IN SSC_Page_Map.Page_ID_NBR%TYPE, 
                                       p_page_type IN SSC_Page_Map.Page_Type%TYPE, 
                                       p_page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)

IS
BEGIN
   UPDATE SSC_Page_Map 
       SET Page_Type = p_page_type, 
           Page_Dcpn = p_page_dcpn 
   WHERE Page_ID_NBR = p_page_id;
   COMMIT;
END;

SET Page\u Type=Page\u Type
使用当前列值更新列

PL/SQL程序中的可见性规则是列名优先于参数名。给你的参数一个不同的名字,一切都会好起来的。一种常见的编码惯例是在参数前加上
p
,以将其标识为参数:

CREATE OR REPLACE PROCEDURE update_rec(p_page_id IN SSC_Page_Map.Page_ID_NBR%TYPE, 
                                       p_page_type IN SSC_Page_Map.Page_Type%TYPE, 
                                       p_page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)

IS
BEGIN
   UPDATE SSC_Page_Map 
       SET Page_Type = p_page_type, 
           Page_Dcpn = p_page_dcpn 
   WHERE Page_ID_NBR = p_page_id;
   COMMIT;
END;

为零歧义使用别名:

CREATE OR REPLACE PROCEDURE update_rec(
  page_id   IN SSC_Page_Map.Page_ID_NBR%TYPE,
  page_type IN SSC_Page_Map.Page_Type%TYPE,
  page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)
IS
BEGIN
  UPDATE SSC_Page_Map
  SET Page_Type     = update_rec.page_type,
    Page_Dcpn       = update_rec.page_dcpn
  WHERE SSC_Page_Map.Page_ID_NBR = update_rec.page_id;
  COMMIT;
END;

(注意:我见过一个例子,有人在一个表中添加了一个名为
p_xyz
的列,这给客户端带来了无尽的麻烦,客户端的命名约定对所有过程/函数参数都有
p_xyz
。相比之下,别名方法在100%的情况下都有效。)

使用别名来消除歧义:

CREATE OR REPLACE PROCEDURE update_rec(
  page_id   IN SSC_Page_Map.Page_ID_NBR%TYPE,
  page_type IN SSC_Page_Map.Page_Type%TYPE,
  page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)
IS
BEGIN
  UPDATE SSC_Page_Map
  SET Page_Type     = update_rec.page_type,
    Page_Dcpn       = update_rec.page_dcpn
  WHERE SSC_Page_Map.Page_ID_NBR = update_rec.page_id;
  COMMIT;
END;

(注意:我见过一个例子,有人在一个表中添加了一个名为
p_xyz
的列,这给客户端带来了无尽的麻烦,客户端的命名约定对所有过程/函数参数都有
p_xyz
。相比之下,别名方法在100%的情况下都有效。)

使用别名来消除歧义:

CREATE OR REPLACE PROCEDURE update_rec(
  page_id   IN SSC_Page_Map.Page_ID_NBR%TYPE,
  page_type IN SSC_Page_Map.Page_Type%TYPE,
  page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)
IS
BEGIN
  UPDATE SSC_Page_Map
  SET Page_Type     = update_rec.page_type,
    Page_Dcpn       = update_rec.page_dcpn
  WHERE SSC_Page_Map.Page_ID_NBR = update_rec.page_id;
  COMMIT;
END;

(注意:我见过一个例子,有人在一个表中添加了一个名为
p_xyz
的列,这给客户端带来了无尽的麻烦,客户端的命名约定对所有过程/函数参数都有
p_xyz
。相比之下,别名方法在100%的情况下都有效。)

使用别名来消除歧义:

CREATE OR REPLACE PROCEDURE update_rec(
  page_id   IN SSC_Page_Map.Page_ID_NBR%TYPE,
  page_type IN SSC_Page_Map.Page_Type%TYPE,
  page_dcpn IN SSC_Page_Map.Page_Dcpn%TYPE)
IS
BEGIN
  UPDATE SSC_Page_Map
  SET Page_Type     = update_rec.page_type,
    Page_Dcpn       = update_rec.page_dcpn
  WHERE SSC_Page_Map.Page_ID_NBR = update_rec.page_id;
  COMMIT;
END;

(注意:我见过一个例子,有人在一个表中添加了一个名为
p_xyz
的列,这给客户机带来了无尽的麻烦,客户机的命名约定对所有过程/函数参数都有
p_xyz
。相比之下,alias方法在100%的时间内都有效。)

Genius!感谢您提供了如此简单而优雅的解决方案。天才!感谢您提供了如此简单而优雅的解决方案。天才!感谢您提供了如此简单而优雅的解决方案。天才!感谢您提供如此简单而优雅的解决方案。