今天寫了乙個有關儲存過程的**段,但是出師不利第乙個儲存就開始報錯(以下為本人在實驗過程中所遇到的錯誤,如有不妥之處,望指正)
題目要求:
借書時要求輸入借閱流水號,借書證號,圖書編號。(即該儲存過程有3個輸入引數)
借書時,借書日期為系統時間。
圖書的是否借出改為『是』
報錯**:
create or replace procedure p_借書(
p_借閱流水號 in leadinformation.leadid%type,
p_借書證號 in leadinformation.readerid%type,
p_圖書編號 in leadinformation.bookid%type)as
begin
insert into leadinformation
values(p_借閱流水號,p_借書證號,p_圖書編號,to_date(sysdate,'yyyy/mm/dd'),'','','');
update book set book.isout='是' where book.bookid=p_圖書編號;
dbms_output.put_line('操作成功');
commit;
return;
end;
錯誤原因:因為在資料表中日期的儲存型別為date,首先想的是轉換為日期型別,但是沒有想到的是sysdate就已經是date型別,所以這裡不再使用to_date進行轉換。另外,轉換sysdate也只能使用to_char來轉換為char型,也嘗試過先將其轉換為char在轉換為date型,但在實驗過程中也會報錯,因此在日期型別這裡直接使用sysdate。
如果有報這種錯誤的,可以看看引數中是否含有日期型別的資料。
更改後**:
create or replace procedure p_借書(
p_借閱流水號 in leadinformation.leadid%type,
p_借書證號 in leadinformation.readerid%type,
p_圖書編號 in leadinformation.bookid%type)as
begin
insert into leadinformation
values(p_借閱流水號,p_借書證號,p_圖書編號,sysdate,'','','');
update book set book.isout='是' where book.bookid=p_圖書編號;
dbms_output.put_line('操作成功');
commit;
return;
end;
Oracle儲存過程跨使用者執行查詢報錯
在oracle 中,在usera下編寫乙個儲存過程,該儲存過程中引用了另乙個使用者userb下的表或檢視物件。編譯該儲存過程,出現編譯錯誤。報ora 00942 table or view does not exist。但是該錶或檢視的確在userb下存在,而且已經授予了usera dba角色的許可...
Oracle儲存過程跨使用者執行查詢報錯
在oracle中,在usera下編寫乙個儲存過程,該儲存過程中引用了另乙個使用者userb下的表或檢視物件。編譯該儲存過程,出現編譯錯誤。報ora 00942 table or view does not exist。但是該錶或檢視的確在userb下存在,而且已經授予了usera dba角色的許可權...
Oracle 儲存過程與函式
儲存過程引數模式包括in out in out。in 預設引數模式 表示當儲存過程別呼叫時,實參值被傳遞給形參 形參起變數作用,只能讀該引數,而不能修改該引數。in模式引數可以是變數或表示式。out 表示當儲存過程被呼叫時,實參值被忽略 形參起未初始化的pl sql變數的作用,形參的初始值為null...