oracle儲存過程報錯 文字與文字字串不匹配

2021-09-29 07:21:02 字數 1317 閱讀 2864

今天寫了乙個有關儲存過程的**段,但是出師不利第乙個儲存就開始報錯(以下為本人在實驗過程中所遇到的錯誤,如有不妥之處,望指正)

題目要求:

借書時要求輸入借閱流水號,借書證號,圖書編號。(即該儲存過程有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...