oracle儲存過程的建立和執行問題

時間 2022-02-09 01:55:03

1樓:

1. 儲存過程中不能直接select 出結果,定義一些變數 之後select into 變數

2. 既然是select就沒有必要用動態sql了,而且你的v_sql 拼的有問題

2樓:信春哥_不掛科

你是在pl/sql的sql語句視窗執行的嗎?

在sql語句視窗要執行儲存過程的話要用語句塊begin

sp_ys('201305','50101');

end;

如果是在命令視窗,或者直接在sqlplus裡面,exec sp_ys('201305','50101');應該是沒問題的

3樓:景賢陽

寫成:call sp_ys('201305','50101'); 就對了

oracle 定義儲存過程 不能執行,處於無效狀態。

4樓:

無效狀態有兩種可能:

1、一種是你的儲存過程編輯沒有成功,建立了,但裡面有語法錯誤。

2、還有一種是儲存過程使用的表有結構上的改變,需要重新編譯一下。

解決方法如下:

重新編譯一下,如果不成功,就是有語法問題,你需要修改儲存過程。

延展閱讀:

修改儲存過程的操作:在你的儲存過程,滑鼠右鍵,點修改,再儲存就行了。

5樓:匿名使用者

兩個update後的from都去掉

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

6樓:匿名使用者

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

在使用者的sqlplus裡執行

grant create table to 使用者;

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

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

如:str := 'create table 表名 '

execute immediate str;

7樓:

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

8樓:匿名使用者

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

9樓:

儲存過程不能自己使用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 在儲存過程中用動態sql建立序列為何會遇到許可權不足的問題呢?

10樓:帥代秋

從控制檯進去給使用者賦予許可權。oracle許可權很多很細的,滑鼠點死,怕煩就賦dba。

11樓:暈逍遙

當然不行了,你沒給普通使用者授權執行表空間的新增刪改的許可權

12樓:匿名使用者

create or replace procedurecreate sequence

都需要許可權。。。

用sysdba給該使用者grant一個吧。。

grant execute any procedure to 普通使用者 with admin option;

grant resource to 普通使用者; --這個已經包含了序列的許可權

關於oracle中建立簡單的儲存過程,求助

open out all for v sql,這個開啟遊標的寫法,你裡面沒定義遊標!v sql nvarchar2 2000 這個資料型別改為。v sql varchar2 2000 說的對,out all沒有定義遊標。sql,建立一個簡單的儲存過程 procgetjc 要求結果是求5 create...

在oracle中建立儲存過程,來迴圈獲取a表中存放的查詢sql語句並一條一條的執行該sql語句並存下來

create or replace package body pkg a testpackage is procedure pkg a testprocedure prm 引數 in varchar2,prm 返回值 out number,prm 錯誤資訊 out varchar2 is type ...

oracle定義oracle儲存過程輸出1100之間

翔阿狗 create or replace function isprime num in number return boolean isbegin if num 1 then return false end if for i in 2.num 1 loop if mod num,i 0 the...