在oracle中建立帶參儲存過程,傳進去的引數可以為空麼?在儲存過程中要如何判斷傳進來的值是否為空

時間 2022-08-15 14:21:36

1樓:

if pi_strin is null then --判斷傳入引數v_sql :='select 1 from dual '; --不帶引數

else

v_sql :='select 1 from dual where 條件=' || pi_strin;

end if;

--執行sql查詢

execute ....

2樓:匿名使用者

傳進去的條件是可以為空的,判斷的話加上if(xx is not null and xx<>' ')then.........

oracle帶參(傳入,傳出)的儲存過程怎麼執行

3樓:刺友互

1、新建儲存過程,create or replace  procedure chk_sys_emp 檢查系統工號。

2、定義引數及變數:(trev in varchar2,tres out varchar2) is c_emp varchar2(25)。

3、儲存過程框架用begin開始,end結束。

4、檢視需要呼叫表的結構以及相關字段。會用到表中的 emp_no enabled。

5、儲存過程按需新增sql語句。

6、程式執行測試ok。

c#如何向儲存過程傳遞null值或空引數~

4樓:匿名使用者

儲存過程的引數要這麼寫:

@p1 int=null,

@p2 int=null,

@p3 nvarchar(50)=null儲存過程裡面這麼判斷:

if(@p1 is null)

begin

endelse if(@p2 is not null)begin

end在c#裡面,如果要傳遞空的值型別,可以使用可空型別public void m(int? p1,int? p2)

5樓:匿名使用者

第乙個問題,首先你確定你的sqlparameter引數裡的確是提供了相應的引數,然後給引數賦值dbnull.value;

第二個問題,我覺得首先你確定datagridview繫結的資料來源裡有結果,可以通過新增斷點檢視一下,我估計資料來源裡的結果為空,原因可能是你傳遞的引數值有誤

6樓:匿名使用者

7樓:花術少

在後面加is null

oracle中如何為儲存過程傳遞引數?

8樓:秋天的白樺

第一種:唯讀。引數是唯讀的,不能修改,即呼叫時傳遞進來的是常量,或者變數(但變數不能在儲存過程中修改)。通常select及dml型別的儲存過程傳遞的是in型別的引數。

第二種:只寫。忽略呼叫語句傳遞的任何引數,並在函式(過程)內部給這些引數賦值,因此是只寫的。

(這種情況是在函式或過程內部給引數重新賦值,但重新賦值後的引數是無法被外部呼叫的(好像游標型別的引數除外))

create or replace  procedure "scott"."swap" (firstvalue out

number, secondvalue out  number) is

temp number;

begin

temp := firstvalue;

firstvalue := secondvalue;

secondvalue := temp;

end swap;

外部呼叫:

set serveroutput on;

declare

firstval number;

secondval number;

begin

firstval := 10;

secondval := 20;

scott.swap(firstval,secondval);

dbms_output.put_line('first is ' || firstval);

dbms_output.put_line('second is ' || secondval);

end;

無法在外部訪問到firstvalue與secondvalue的值。此時列印出的結果為:

first is

second is

第三種:讀或寫。這可以完全控制引數,讀取傳遞的引數的值。

可以再函式(過程)內部修改引數的值,在退出函式(過程)後,這些引數被賦給在函式內部寫入的值,這樣就可以返回多個值。(即入口引數寫入值後,可以傳遞到函式(過程)的外部,供外部呼叫的時候使用)

ps:函式中的返回值為如下幾種:

char;  varchar2; number; integer; date; boolean; table; record

sql> create or replace procedure helloworld2 (

2    p_user_name in     varchar2,

3    p_out_val   out    varchar2,

4    p_inout_val in out varchar2

5 ) as

6 begin

7     dbms_output.put_line('hello ' || p_user_name || p_inout_val || '!');

8     p_out_val := 'a';

9     p_inout_val := 'b';

10 end helloworld2;

11 /

procedure created.

sql> declare

2    p_outval varchar2(10);

3    p_inoutval varchar2(10) := '~hi~';

4 begin

5    helloworld2('edward', p_outval, p_inoutval);

7    dbms_output.put_line('p_outval=' || p_outval);

8    dbms_output.put_line('p_inoutval=' || p_inoutval);

9 end;

10 /

hello edward~hi~!

p_outval=a

p_inoutval=b

pl/sql procedure successfully completed.

oracle 儲存過程中能否執行以引數值傳入的儲存過程

9樓:匿名使用者

絕對可以的。不過你這個想法似乎有點沒必要,幹嗎要用個通用的儲存過程呢。如果是用前台呼叫,直接在前台調儲存過程就行了。幹嗎還用個所謂「通用」儲存過程。

你想這樣也可以啊,通用的儲存過程裡把傳入的引數拼接起來賦給乙個字串變數,然後 execute。

10樓:關華容

可以的!

這是乙個用法你看一下:

create or replace procedure p1ascode varchar2(10);

begin

select icode into code from tb1end;

/ 呼叫:

declare code varchar2(10);

execute p1(code);

請問在Oracle資料庫中,建立的資料庫使用者都存放在哪兒?使用者授權後的資訊又放在哪兒

使用者會被放在dba users,好想授權資訊也是這裡邊。匯出單張表也會到匯出對這張表有許可權的除系統級使用者之外的使用者 僅限於此表的使用者 在匯入的時候,需在先建乙個相應的使用者,匯入表的時候會自動對這個 些 使用者進行授權。大概是這樣子的,我也是剛學。oracle資料庫在建立後都會有四個預設資...

oracle建立表缺失左括號,Oracle建立表缺失左括號?

好像對於外來鍵來說,就是我這個表的 字段,依賴於 另外乙個表的 主鍵。例如 我這裡對乙個表的 乙個字段,增加乙個外來鍵。references test main 的地方,只提供了主表的 表名,沒有 提供主表的字段。樓主嘗試把 references course cno 替換為 references ...

oracle如何建立觸發器,Oracle如何建立觸發器

一般在sqlplus或者其他第三方oracle工具中,按照語法及需求寫好 直接執行建立過程即可。一般語法如下 create or replace trigger trigger name or on schema.table name schema.view name referencing for...

oracle如何建立新使用者,oracle 如何建立乙個新使用者

oracle資料庫有複雜的許可權控制體系,在oracle資料庫建立的時候共有兩個使用者 sys和system,這兩個使用者都是有較多的系統許可權的使用者。可以在sys或者system使用者下在oracle中建立新的使用者。create user user1 identified by oral 此時...

在MFC中如何建立函式,在MFC中如何建立乙個函式

1 視窗建立函式 這裡主要討論函式create和createex。它們封裝了win32視窗建立函式 createwindowex。create的原型如下 bool cwnd create lpctstr lpszclassname,lpctstr lpszwindowname,dword dwsty...