sql server 存储过程如何调用存储过程

sql server 2008中已存在一个存储过程 P1,现在要通过存储过程P2在存储过程P1产生的数据中进行进一步的数据筛选。

第一种方法: 使用output参数
USE AdventureWorks; GO
IF OBJECT_ID ( 'Production.usp_GetList', 'P' ) IS NOT NULL DROP PROCEDURE Production.usp_GetList; GO
CREATE PROCEDURE Production.usp_GetList @product varchar(40) , @maxprice money
, @compareprice money OUTPUT , @listprice money OUT AS
SELECT p.name AS Product, p.ListPrice AS 'List Price' FROM Production.Product p
JOIN Production.ProductSubcategory s
ON p.ProductSubcategoryID = s.ProductSubcategoryID WHERE s.name LIKE @product AND p.ListPrice < @maxprice; -- Populate the output variable @listprice. SET @listprice = (SELECT MAX(p.ListPrice) FROM Production.Product p
JOIN Production.ProductSubcategory s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.name LIKE @product AND p.ListPrice < @maxprice); -- Populate the output variable @compareprice. SET @compareprice = @maxprice; GO
另一个存储过程调用的时候:
Create Proc Test as
DECLARE @compareprice money, @cost money
EXECUTE Production.usp_GetList '%Bikes%', 700, @compareprice OUT, @cost OUTPUT
IF @cost <= @compareprice BEGIN
PRINT 'These products can be purchased for less than $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.' END ELSE
PRINT 'The prices for all products in this category exceed $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'

第二种方法:创建一个临时表
create proc GetUserName as begin
select 'UserName' end
Create table #tempTable (userName nvarchar(50)) insert into #tempTable(userName) exec GetUserName
select #tempTable
--用完之后要把临时表清空 drop table #tempTable
--需要注意的是,这种方法不能嵌套。例如:
procedure a begin ...
insert #table exec b end
procedure b begin ...
insert #table exec c select * from #table end
procedure c begin ...
select * from sometable end
--这里a调b的结果集,而b中也有这样的应用b调了c的结果集,这是不允许的,
--会报“INSERT EXEC 语句不能嵌套”错误。在实际应用中要避免这类应用的发生。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-08
SqlConnection con = new SqlConnection("连接字符串");

SqlCommand cmd = new SqlCommand("SelectManStudent", con);
SqlParameter parm = new SqlParameter("@Sex", SqlDbType.NVarChar);
parm.Value = '男';//此处传性别
cmd.Parameters.Add(parm);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();

sda.Fill(ds);

con.Close();

//ds就是查出来的结果集本回答被网友采纳
第2个回答  2010-12-14
sda.Fill(ds);

con.Close();

//ds就是查出来的结果集

sqlserver里存储过程怎么调用存储过程
sqlserver里调用存储过程的具体操作步骤如下:1、打开SQL Server Managment管理工具,新建一个表。2、然后在表中插入一些样例数据。3、接下来在SQL Server Managment中右键单击可编程性,选择新建存储过程。4、然后在SQL编写界面中编写SQL语句,注意这里的@name就是接收的输入参数。5、编写好存储过程,执行一...

sql server 存储过程如何调用存储过程
第一种方法: 使用output参数 USE AdventureWorks; GO IF OBJECT_ID ( 'Production.usp_GetList', 'P' ) IS NOT NULL DROP PROCEDURE Production.usp_GetList; GO CREATE PROCEDURE Production.usp_GetList @product varchar(40) , @maxprice money , @compareprice money OUTPUT , @listpri...

sql server 怎样在存储过程中调用存储过程
--存储过程的定义 create procedure [sys].[sp_add_product]()as go --存储过程的调用 declare @m_viewcount int declare @m_hotcount int exec sp_add_product @m_viewcount,@m_hotcount 二、SQL SERVER中调用带输出参数的存储过程 SQL 代码 ?--定义存储过程 create procedure [sys].[sp_a...

SQL Server 如何执行 带参数的 存储过程
(1)调用通用数据访问类:SqlHelper,执行SqlHelper.ExecuteNonQuery()方法 (2)使用示例:SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcedure,sqlexec,myparm)(3)其中传递的4个参数如下:“conn”:为链接字符 “CommandType.StoredProcedure”:表示要执行的SQL存储过程类型 “sqlexec”:要执行的SQL...

在SQL Server2008上调试存储过程的完整步骤
方法如下 1. 创建需要调试的存储过程,然后执行它,即保存它. 我要演示的存储过程的名称是“ usp_Passport_GetNewDepositary”2,找到存储过程,右键单击“执行存储过程”,将弹出以下界面,需要输入存储过程使用的参数 3sql调试存储过程,输入参数后单击“确定”,系统将在编辑器中为您生成以下代码 4. ...

SQL存储过程如何调用存储过程?
1、首先先创建一个存储过程,代码如图,存储过程主要的功能是为表JingYan插入新的数据。2、执行这几行代码,看到执行成功,数据库里现在已经有存储过程sp_JY。3、先看下JingYan表里目前的数组,如图,只有三行数据。4、在mysql里,调用存储过程,只需要用call关键字,带上存储过程的名称就行了,当然有...

怎么使用存储过程
-- Sql 里if语句 IF 条件 BEGIN 执行语句 END ELSE BEGIN ...>> 问题二:SQL存储过程如何调用存储过程? 在存储过程里用exec 执行另一存储过程名及它需要的参数就可以了 如exec抚abc '1', '2'(abc 是存储过程的名字, '1','2' 是它的参数 问题三:oracle中的存储过程,有什么作用,以及怎么...

sql server 2008 怎么使用存储过程
第一步:点击数据库下的“可编程性”,选择“存储过程”,点击鼠标右键,选择“新建存储过程”第二步:在create PROCEDURE 后 输入存储过程的名字,紧跟着的就是定义存储过程的参数,接下来就可以去编写自己所需要组装的存储过程语句了 第三步: 编译存储过程,在工具栏上按下执行按钮,如果没有错误,就...

如何在C#调用SQL Server的存储过程
1、找开sql server 2005,创建表名为abc的表,表的设计如图。2、给表中加入三行数据,如图。3、创建一个名为“pro_abc”的存储过程,内容如图。4、在程序中的配置文件,配置数据库链接字符串,如图。5、在程序中创建一个抽象类SqlHelper,来实现数据访问层的代码,如图。6、最后在窗体程序中写入调用...

sql数据库中怎样调用带参数的存储过程
在sql server中 执行带参数的存储过程 exec+空格+存储过程名+空格+参数 多个参数的话用逗号分隔 传出参数要加output 例如:exec P_GetIntegratedFluxOneMoment @StartTableName,@ColName,@StartTime,@StartValue output 其中@StartTableName,@ColName,@StartTime,@StartValue都是前面已经定义好的变量 ...

相似回答