有返回值的存储过程
❶ 如何获取存储过程返回值
楼主会在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)
数据库都自带很多函数的