如何使用 Daynamic sql 在 oracle 中更新表

问题描述 投票:0回答:1

我是 oracle 的新手。我创建了一个包含列的表并将数据插入表中 我的代码是:

create table Tbl_Job_Desc 
(
id int,
name varchar2(50),
family varchar2(50),
jobname varchar2(50)
)


INSERT INTO Tbl_Job_Desc (id,name,family,jobname )VALUES (1,'negar','GHANBARIAN','PROGRAMMER');
INSERT INTO Tbl_Job_Desc (id,name,family,jobname )VALUES (1,'ZAHRA','GHANBARIAN','STUDENT');
INSERT INTO Tbl_Job_Desc (id,name,family,jobname )VALUES (1,'SHIRIN','SAEEDI','NURSE');
INSERT INTO Tbl_Job_Desc (id,name,family,jobname )VALUES (1,'FATEME','GHASEMI','TEACHER');
INSERT INTO Tbl_Job_Desc (id,name,family,jobname )VALUES (1,'mohammad','AZADI','PROGRAMMER');

我想写一个过程,从用户那里获取输入并产生一个更新语句,如下所示。 更新 Tbl_Job_Desc 设置 Jobname='newjob' 我写了这个程序但是我得到了错误,请看看我的程序并帮助我。 我的程序是:

CREATE OR replace PROCEDURE Ds_sampleTest (
                                      newjob  IN VARCHAR2
                                     
                                       )
IS
  newjob VARCHAR2(200);
  query  VARCHAR2(1000);
BEGIN

    query := 'update Tbl_Job_Desc set Jobname='||newjob' ;
    
    dbms_output.Put_line(query);

     EXECUTE IMMEDIATE query;
END;


-- Run the Procedure
CL scr
SET serveroutput ON
BEGIN
    Ds_sample( 'doctor');

    COMMIT;
END;








我想写一个过程,从用户那里获取输入并产生一个更新语句,如下所示。 更新 Tbl_Job_Desc 设置 Jobname='newjob'

oracle plsql oracle-sqldeveloper plsqldeveloper plsql-package
1个回答
0
投票

将您收到的错误消息添加到您的问题中会有所帮助。

如果贴出你的代码没有错误,那么我认为你的错误与这部分代码有关:

query := 'update Tbl_Job_Desc set Jobname='||newjob' ;

在这种情况下,如果你想在文本中添加引号,你需要在文本中双引号,你的例子中正确的代码是:

query := 'update Tbl_Job_Desc set Jobname='''||newjob||'''' ;

这会将查询保存为:

update Tbl_Job_Desc set Jobname='your_newjob'
© www.soinside.com 2019 - 2024. All rights reserved.