oracle的儲存過程不能使用drop語句嗎

2022-02-26 18:10:50 字數 2861 閱讀 4723

1樓:匿名使用者

儲存過程裡面, 一般只寫 dml 的語句。

也就是基本的 select . insert, delete , update 這一類的語句。

如果你要在儲存過程裡面, 執行 ddl 語句。

也就是 create, alter, drop 這一類的語句。

那麼需要使用動態 sql 來處理。

也就是execute immediate ( 'create table test( id int ) ' );

execute immediate ( 'drop table test ' );

這樣的方式來處理。

對於 ddl 語句, 這類語句, 如果成功了, 就生效了, 不能回滾的。

也就是當你 drop table 某個表的時候, 執行成功了, 表就被刪除了。

不需要你 commit 的。

你也無法  rollback , 然這個表不刪除了。

2樓:匿名使用者

你要執行drop和create、alter 這樣的語句要這麼執行:

execute immediate 'drop table table_name';

oracle 儲存過程中不能執行create語句,請問各位大蝦是為什麼?請支招,**等

3樓:匿名使用者

必須賦權才可以執行create語句,下面以create table為例,

在使用者的sqlplus裡執行

grant create table to 使用者;

之後就可以在儲存過程裡的動態sql裡做包含create table的語句了。

同樣 create view的話就應該執行grant create view to 使用者;

如:str := 'create table 表名 '

execute immediate str;

4樓:

你把異常資訊貼出來. 要不怎麼分析是什麼原因引起的.

5樓:匿名使用者

查一下所在使用者的許可權,看是否有create 許可權,如沒有授權即可

6樓:

儲存過程不能自己使用ddl語句,要使用動態語句來執行

參考下面的:

create or replace function code

return varchar2 as

vglidecode varchar2(20);

seq_year varchar2(4);

str varchar2(100);

begin

update tbl_seqyear set seqyear=to_char(sysdate, 'yyyy ');

str:= 'drop sequence xxseq ';

execute immediate str;

str := 'create sequence xxseq '

execute immediate str;

select xxseq.nextval into vglidecode from dual;

end if;

return(vglidecode);

end;

oracle中的儲存過程裡不能直接用select語句嗎 200

7樓:匿名使用者

可以直接執行sql語句。只是直接執行的話,無法看到查詢後的結果。

oracle中的儲存過程裡不能直接用select語句嗎

8樓:兔子吹牛

不可以的,必須要使用select into

plsql程式塊中是不可以直接使用select的你如果想使用結果集,可以使用游標!

oracle儲存過程select語句必須帶into嗎

9樓:匿名使用者

oracle儲存過程select語句必須帶into。因為要將查詢結果放到變數中,如以下儲存過程:

create or replace procedure p_test

asv_begintime varchar2(20);

v_endtime varchar2(20);

v_str varchar2(10);

begin

v_begintime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss');

select 'badkano' into v_str from dual;

v_endtime:=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss');

dbms_output.put_line('開始時間為:'||v_begintime);

dbms_output.put_line('結束時間為:'||v_endtime);

end;

其中select 'badkano' into v_str from dual;此句就是將「badkano」放入變數「v_str」中。

10樓:

是的,在儲存過程中也不可能有單獨查詢而不返回結果的情況啊。

所以必須使用into子句返回乙個結果,以便在儲存過程中使用它。

11樓:匿名使用者

如果是傳值的話 必須into

如果想得到 結果的話 可以 在查詢前 使用 open result for 查出結果

ORACLE的儲存過程都用在什麼地方?最好能舉幾個工作中的例子

儲存過程最多的用於c s兩層架構模式下,用於在後台處理業務邏輯和資料。前台開發工具例如powerbuilder可以實現介面展示和操作流程,涉及到後台某個集中處理資料 或者大批量資料的業務邏輯,就在oracle後台儲存過程裡面來實現了。解除安裝儲存過程裡面的東西,往往是不需要互動的一段處理過程,例如前...

oracle怎麼給儲存過程建立同義詞

一般操作是 1.create or replace synonym a1fora2 testdb 2.grant connect to someusergrant dba to someusergrant resource to someuser3.grant all on 表 to someuse...

行動硬碟不能使用,行動硬碟不能使用

你說硬碟不轉絕對是供電的問題,但絕對不是供電不足,因為就算供電不足硬碟也會轉,你還是在介面插好的情況下檢查硬碟電機的供電問題 因為前段時間,我幫朋友也買了三星的移動硬碟盒,也出現你說的這種情況,後來我就去問他們那個銷售點,裡面的人給我說最近三星移動硬碟盒都有些問題。第一你的行動硬碟是不是有格式化過 ...