SQL中存储过程调用存储过程,怎么取返回值

lyqof908 2002-04-08 04:20:29
我有存储过程A和存储过程B(一个自

我用A调用B时,B如何把结果(只一个值)返回给A呢?
能给我一给小例子吗?

我搜索了一下别人的提问,有人回答采用临时表,
但临时表表名只能出现一次,我有IF ELSE的,两次就不行了。
如果建立一个普通的表,就算是DEL这个表,数据库还是会变大。

我用VB编程,能不能把存储过程做成像函数一样调用
存储过程B的功能就是一个我自定义的字符串加密函数。

这是我第一次在SQL版提问,谢谢大家。
...全文
3085 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_j76 2002-08-28
  • 打赏
  • 举报
回复
mark
warning 2002-04-08
  • 打赏
  • 举报
回复
yt_yule(香茗)
@ytd_sales 变量在存储过程主体中包含参数值,而该存储过程在退出时,将 @ytd_sales 变量值返回至调用程序。这常常被称作"传址调用功能"。
在联机帮助中有很详细的解释,建议去看看,这个是上面的例子。
lyqof908 2002-04-08
  • 打赏
  • 举报
回复
不好意思,打错字了。

我是想说:如果自定义函数?

其实我说的存储过程B要实现的就是一个字符串加密的函数功能。
因为我发现如果我的数据库文件可以随便被其它人激活打开。我的表结构,记录无法保密。
所以要想把数据加密后才存到表中。
yt_yule 2002-04-08
  • 打赏
  • 举报
回复
TO lyqof908(刘运祥) :
”请都如果自定义函数?”什么意思?
lyqof908 2002-04-08
  • 打赏
  • 举报
回复
多谢。
请都如果自定义函数?
yt_yule 2002-04-08
  • 打赏
  • 举报
回复
warning(爱就爱了):

EXECUTE get_sales_for_title "Sushi, Anyone?", @ytd_sales = @ytd_sales_for_title OUTPUT
中的@ytd_sales = @ytd_sales_for_title 的顺序对吗?
怎样解释?
yt_yule 2002-04-08
  • 打赏
  • 举报
回复
按照上面的例子,我这样写,请大家看看对不对?
EXECUTE get_sales_for_title "Sushi, Anyone“
FETCH get_sales_for_title into @ytd_sales_for_title
@ytd_sales_for_title前用不用加:号,如果不对,请提示正确的写法?
谢谢!
warning 2002-04-08
  • 打赏
  • 举报
回复
下列程序用输入参数值执行存储过程,并将存储过程的输出值保存到调用程序的局部变量 @ytd_sales_for_title 中。
-- Declare the variable to receive the output value of the procedure.
DECLARE @ytd_sales_for_title int
-- Execute the procedure with a title_id value
-- and save the output value in a variable.
EXECUTE get_sales_for_title "Sushi, Anyone?", @ytd_sales = @ytd_sales_for_title OUTPUT
-- Display the value returned by the procedure.
PRINT 'Sales for "Sushi, Anyone?": ' + convert(varchar(6),@ytd_sales_for_title)
GO
warning 2002-04-08
  • 打赏
  • 举报
回复
下列示例显示有一个输入参数和一个输出参数的存储过程。存储过程中的第一个参数 @title 将接收由调用程序指定的输入值,而第二个参数 @ytd_sales 将向调用程序返回该值。SELECT 语句使用 @title 参数以获得正确的 ytd_sales 值,并将该值赋予 @ytd_sales 输出参数。
CREATE PROCEDURE get_sales_for_title
@title varchar(80), -- This is the input parameter.
@ytd_sales int OUTPUT -- This is the output parameter.
AS
-- Get the sales for the specified title and
-- assign it to the output parameter.
SELECT @ytd_sales = ytd_sales
FROM titles
WHERE title = @title
RETURN
GO
nononono 2002-04-08
  • 打赏
  • 举报
回复

1. 使用存储过程的参数的OUTPUT选项
2. 如果是2000,可以考虑自定义函数。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧