存储过程返回值接收
‘壹’ 在sql Server中~如何利用RETURN返回存储过程的值~~~
从存储过程返回非表类型的值有二种方法:
1.存储过程使用return语句返回值.此种情况下,接收该存储过程值的方法是:
delcare @ReturnValue int /*(与存储过程return语句返回值的类型相同)*/
exec @ReturnValue = StoredProc /*StoredProc为一个存储过程*/
2.存储过程使用OUTPUT输出参数.此种情况下,直接使用OUTPUT输出参数即可:
declare @id int
set @id = 1
exec StoreProc @id OUTPUT /*StoredProc为一个存储过程*/
select @id
‘贰’ 存储过程select语句返回的结果如何接收
SET @length=SELECT count(id) FROM Split(@subjectid,',')
改为漏猛乎SELECT @length=count(id) FROM Split(@subjectid,',')
SELECT @article=SELECT a FROM Split(@subjectid,',') WHERE id=@id
改为SELECT @article=a FROM Split(@subjectid,',') WHERE id=@id
SELECT @articlensid=INSERT INTO sourcelib SELECT TITLE FROM sourcelib WHERE NSID =@NSID SELECT @@IDENTITY
改为
INSERT INTO sourcelib SELECT TITLE FROM sourcelib WHERE NSID =@NSID
SELECT @articlensid=@@IDENTITY
你这个基本上都是赋值的错误,请知隐参照返悉上面给的修改方法把其他的都修改好后再调试。
‘叁’ java 接收存储过程的return返回值
Connectionconn;
/*省略连接过程*/
CallableStatementstmt=con.prepareCall("{?=callp_函数1('type',1991,?)}");
stmt.registerOutParameter(1,Types.INTEGER);
stmt.registerOutParameter(2,Types.DECIMAL);
ResultSetrs=stmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
}
System.out.println(stmt.getInt(1));
System.out.println(stmt.getDouble(2));
/*注意SQL语句的序号是从1个开始。*/
注册返回参数
第一晌基余个问号就是整个执行结果的返回值。
第二个问号宴滚对应的是output参数的返回结果。
我自己设置的结果是返回值是int类型,output的参数的decimal(15,2),
然后取出锋羡来是按照int和double来取出。
‘肆’ 如何获取存储过程返回值
1.OUPUT参数返回值
CREATE PROCEDURE [dbo].[nb_order_insert](
@o_buyerid int ,
@o_id bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
INSERT INTO [Order](o_buyerid )
VALUES (@o_buyerid )
SET @o_id = @@IDENTITY
END
END
2.存储过程中获得方法:
DECLARE @o_buyerid int
DECLARE @o_id bigint
DECLARE @result bit
EXEC @result = [nb_order_insert] @o_buyerid ,o_id output
3.SELECT 数据集返回值
CREATE PROCEDURE [dbo].[nb_order_select](
@o_id int
)
AS
BEGIN
SET NOCOUNT ON;
SELECT o_id,o_buyerid FROM [Order]
WHERE o_id = @o_id
GO
‘伍’ mysql存储过程怎么接收返回参数
mysql中要获得存储过程的返回值,可以增加一个out参数,用来返回。
mysql中存储过程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid;
SET autocommit = 0;
IF EXISTS (
SELECT
*
FROM
t_user_voucher tuv,
t_voucher tv
WHERE
tv.id = tuv.voucherid
AND tv.batch =@batch_a
) THEN
SET result = 1;-- 已存在
SELECT
result;
ELSE
IF @c_count_a > 0 THEN
IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 THEN
‘陆’ 如何调用存储过程的返回值
存储过程
中的第一个参数
@title
将接收由调用程序指定的输入值,而第二个参数
@ytd_sales
将向调用程序返回该值。SELECT
语句使用
@title
参数以获得正确的
ytd_sales
值,并将该值赋予
@ytd_sales
输出参数。
CREATE
PROCEDURE
get_sales_for
‘柒’ 在 sql select 语句中 如何获取 存储过程的返回值
SQL Server中存储过程的返回值不是通过return语句返回的(return语句是在用户自定义函数中使用的),而是通过存储过程的参数来返回,在定义存储过程的参数时使用关键字output来指定此参数是返回值。
而在调用存储过程时,也必须使用关键字给接收返回值的变量,这样才能在调用时获得存储过程的返回值。
示例:
createproceredbo.pr_add@aint,@bint,@cintoutput
as
set@c=@a+@b
go
调用:
declare@vint
executedbo.pr_add1,2,@voutput
select@v
‘捌’ C#如何接收存储过程的返回结果集
请看下面加粗代码 public static string[] GetUserInformation() //获得用户详细信息 { DataSet ds = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(); string[] InForMation = new string[3]; using (SqlConnection conn = new SqlConnection(getTools.ConnString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("prou_iflogin", conn)) { cmd.CommandType = CommandType.StoredProcere; cmd.Parameters.Add("@userid", SqlDbType.VarChar); cmd.Parameters["@userid"].Value = user.Userid; cmd.ExecuteNonQuery(); adapter.SelectCommand = cmd; if (ds != null) { adapter.Fill(ds, "userinfo"); } //这里怎么把ds的数据读取出来放到数组里面呢? //下面的就是放到数组里的代码 DataTable dt = ds.Table[0]; string[] strmds = new string[dt.Rows.Count]; string[] strtime = new string[dt.Rows.Count]; string[] username = new string[dt.Rows.Count]; for(int i=0;i<dt.Rows.Count;i++) { strmds[i] = dt.Rows[i][0].ToString(); strtime[i] = dt.Rows[i][1].ToString(); username[i] = dt.Rows[i][2].ToString(); } } return InForMation; } }