有返回值的存儲過程
❶ 如何獲取存儲過程返回值
樓主會在c#中使用存儲過程嗎?
如果會的話,sql執行函數賦值給一個變數就可以了
sqlconnection
cnn
=
new
sqlconnection();
cnn.connectionstring
=
"data
source
=
數據源;uid=sa;pwd
=
;database=資料庫名";
cnn.open();//資料庫連接
//設置存儲過程參數
sqlparameter
prm;
sqlcommand
cmd
=
new
sqlcommand();
cmd.connection
=
cnn;
cmd.commandtype
=
commandtype.storedprocere;
cmd.commandtext
=
"存儲過程名";
//項目類型
prm
=
new
sqlparameter();
prm.parametername
=
"參數名1";
prm.sqldbtype
=
sqldbtype.varchar;
prm.size
=
50;
prm.value
=
combobox1.text;
prm.direction
=
parameterdirection.input;
cmd.parameters.add(prm);
...
//可以繼續設置參數,參數個數由存儲過程的具體內容決定
cmd.executenonquery();//執行存儲過程
實際上如果要獲取存儲過程的返回值,只要將上面一句代碼修改成:
int
retn
=
cmd.executenonquery();
就可以了
❷ 有返回值的存儲過程怎麼在命令行執行
--1.OUPUT參數返回值
CREATEPROCEDURE[dbo].[nb_order_insert](
@o_buyeridint,
@o_idbigintOUTPUT
)
AS
BEGIN
SETNOCOUNTON;
BEGIN
INSERTINTO[Order](o_buyerid)
VALUES(@o_buyerid)
SET@o_id=@@IDENTITY
END
END
存儲過程中獲得方法:
DECLARE@o_buyeridint
DECLARE@o_idbigint
EXEC[nb_order_insert]@o_buyerid,@o_idoutput
--2.RETURN過程返回值
CREATEPROCEDURE[dbo].[nb_order_insert](
@o_buyeridint,
@o_idbigintOUTPUT
)
AS
BEGIN
SETNOCOUNTON;
IF(EXISTS(SELECT*FROM[Shop]WHERE[s_id]=@o_shopid))
BEGIN
INSERTINTO[Order](o_buyerid)
VALUES(@o_buyerid)
SET@o_id=@@IDENTITY
RETURN1—插入成功返回1
END
ELSE
RETURN0—插入失敗返回0
END
存儲過程中獲得方法:
DECLARE@o_buyeridint
DECLARE@o_idbigint
DECLARE@resultbit
EXEC@result=[nb_order_insert]@o_buyerid,o_idbigint
以下是程序獲得存儲過程值
1、獲取Output輸出參數值
//存儲過程
//CreatePROCEDUREMYSQL
//@aint,
//@bint,
//@cintoutput
//AS
//Set@c=@a+@b
//GO
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
conn.Open();
SqlCommandMyCommand=newSqlCommand("MYSQL",conn);
MyCommand.CommandType=CommandType.StoredProcere;
MyCommand.Parameters.Add(newSqlParameter("@a",SqlDbType.Int));
MyCommand.Parameters["@a"].Value=20;
MyCommand.Parameters.Add(newSqlParameter("@b",SqlDbType.Int));
MyCommand.Parameters["@b"].Value=20;
MyCommand.Parameters.Add(newSqlParameter("@c",SqlDbType.Int));
MyCommand.Parameters["@c"].Direction=ParameterDirection.Output;
MyCommand.ExecuteNonQuery();
Response.Write(MyCommand.Parameters["@c"].Value.ToString());
2、獲取Return返回值
//存儲過程
//CreatePROCEDUREMYSQL
//@aint,
//@bint
//AS
//return@a+@b
//GO
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
conn.Open();
SqlCommandMyCommand=newSqlCommand("MYSQL",conn);
MyCommand.CommandType=CommandType.StoredProcere;
MyCommand.Parameters.Add(newSqlParameter("@a",SqlDbType.Int));
MyCommand.Parameters["@a"].Value=10;
MyCommand.Parameters.Add(newSqlParameter("@b",SqlDbType.Int));
MyCommand.Parameters["@b"].Value=20;
MyCommand.Parameters.Add(newSqlParameter("@return",SqlDbType.Int));
MyCommand.Parameters["@return"].Direction=ParameterDirection.ReturnValue;
MyCommand.ExecuteNonQuery();
Response.Write(MyCommand.Parameters["@return"].Value.ToString());
❸ oracle裡面怎麼調用有返回值的存儲過程
create or replace procere xs_proc(temp_name in varchar2,
temp_num out number) is
num_1 number;
num_2 number;
begin
select yu_wen, shu_xue
into num_1, num_2
from xuesheng
where xing_ming = temp_name;
--dbms_output.put_line(num_1 + num_2);
temp_num := num_1 + num_2;
end;
單個返回值的oracle存儲過程
❹ 如何調用存儲過程,有返回值的,有參數的,存儲過程中調用存儲過程
create procere proc_a as declare b int; c varchar2(10); begin proc_b(b, c); dbms_output.put_line (c); end procere a; 你照我這個寫吧 proc_b(b, c); proc_b是你調用的帶返回參數的存儲過程 b是輸入變數,c是輸出變數
❺ oracle 執行有返回值的存儲過程報錯
P_BOXNO VARCHAR2(1024);
P_BOXNO_NOTE VARCHAR2(1024);
P_MSG VARCHAR2(1024);
DBMS_OUTPUT.PUT_LINE(P_BOXNO || P_BOXNO_NOTE || P_RET || P_MSG);
❻ oracle怎麼寫一個無參存儲過程去調用一個有參數有返回值的存儲過程
create
procere
proc_a
as
declare
b
int;
c
varchar2(10);
begin
proc_b(b,
c);
dbms_output.put_line
(c);
end
procere
a;
你照我這個寫吧
proc_b(b,
c);
proc_b是你調用的帶返回參數的存儲過程
b是輸入變數,c是輸出變數
❼ mysql存儲過程可以有返回值嗎
MySQL存儲過程 如果和SQL一樣的話,那麼就是本身就有一個返回值了。所以只要引用該存儲過程就可以。。
❽ sql 帶返回值的存儲過程
你使用
select *
from Toys
where cToyId='000001' 有返回值???
----------------------------
感覺你寫的沒有錯。。。。
sum(mToyCost)>70 他也返回'mToyCost<60' ???
如果是這樣試試下面的
create proc aaa @cOrderNo char(20)
as
begin
declare @b int
select @b=sum(mToyCost) from OrderDetail where cOrderNo=@cOrderNo group by cOrderNo
if @b >=60
select @b +'mToyCost>=60'
else
select @b + 'mToyCost<60'
end
❾ 存儲過程返回值
create procere InsertNull
@TableName varchar(50),
@Result int output
AS
declare @dtName varchar(1000)
set @dtName='insert into ' + @TableName +' default values'
exec(@dtName)
set @Result=SCOPE_IDENTITY()
select @Result As Result --注意,這里顯示出來
go
然後exec insertnull ...參數
就相當於select Result
如果在程序里,執行這句之後,就能訪問Result欄位了
❿ 存儲過程中調用帶返回值的函數
如果是ACCESS、MySQL、SQL 2000 資料庫
SELECT * FROM tabel_ WHERE date < (now()-30)
資料庫都自帶很多函數的