SQL SERVER 存储过程执行带输出参数的SQL语句拼接

注意:定义的要执行的SQL语句必须是nvarchar类型

CREATE PROC P_BranchOrderSalesStatistics
@beginTime DateTime, --开始时间
@endTime DateTime, --结束时间
@branchCode varchar(20), --门店编码
@NewMemberCount int out, -- 新会员数量
@OrderCount int out, --订单数量
@SalesTotalPrice decimal(18,2) out, --销售额
@ProfitTotalPrice decimal(18,2) out --毛利额
AS
BEGIN

DECLARE @sqlfilter nvarchar(max)
DECLARE @sqlmain nvarchar(max)

DECLARE @orderSaleAmount decimal(18,2)
DECLARE @rechargeSaleAmount decimal(18,2)
DECLARE @consumeSaleAmount decimal(18,2)

DECLARE @orderProfitAmount decimal(18,2)
DECLARE @rechargeProfitAmount decimal(18,2)
DECLARE @consumeProfitAmount decimal(18,2)

--订单销售额和订单毛利(毛利=商品销售价-商品配送价)
SET @sqlmain = ‘ ‘
SET @sqlfilter = ‘ 1=1‘
SET @sqlfilter = @sqlfilter + ‘ AND SaleDate >= ‘‘‘+CAST(@beginTime AS nvarchar(50))+‘‘‘‘
SET @sqlfilter = @sqlfilter + ‘ AND SaleDate <=‘‘‘+CAST(@endTime AS nvarchar(50))+‘‘‘‘

IF(@branchCode <> ‘‘)
SET @sqlfilter = @sqlfilter + ‘ AND BranchNo = ‘‘‘+ @branchCode+‘‘‘‘

SET @sqlmain [email protected] + ‘SELECT @orderSaleAmount = ISNULL(SUM(OrderSalePrice),0), @orderProfitAmount = ISNULL(SUM(OrderProfitPrice),0) FROM V_Reprot_GoodsOrderStatistics WHERE ‘
PRINT (@sqlmain + @sqlfilter)
SET @sqlmain = @[email protected]
exec sp_executesql @sqlmain,N‘@orderSaleAmount decimal(18,2) output, @orderProfitAmount decimal(18,2) output ‘, @orderSaleAmount output,@orderProfitAmount output

END

原文地址:https://www.cnblogs.com/morpheusliu/p/8882443.html

时间: 2024-11-02 21:04:33

SQL SERVER 存储过程执行带输出参数的SQL语句拼接的相关文章

qt调用sql server存储过程并获取output参数

最近新做的一个项目需要使用qt连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章,如果是连接另一台机器的sql server就不用执行第一步“开启ODBC驱动”了 http://www.cnblogs.com/shaolw/p/3411285.html 另外指定数据库用户名和密码可以使用Uid和Pwd,即原文dsn参数可以这样写: QString dsn = QString("Driver={

EF(ServerFirst)执行存储过程实例1(带输出参数)

1.不含动态sql.带输出参数存储过程调用实例 a.存储过程代码: b.EF自动生成代码(包括对应ObjectResult的实体模型): c.调用存储过程代码实例: 总结: ObjectParameter参数对应输出类型时,不必指定类似Output等 ObjectParameter的命名空间:using System.Data.Objects; ObjectParameter参数的Name是对应存储过程参数字符串去掉@符号,例如存储过程参数‘@Count int output‘,对应Name为”

sybase带输出参数的存储过程实例

使用return返回 --create pro USE yfb go create proc cwqi_test_pro(  @newName varchar(20) out,  @oldName varchar(20) in  ) as begin   set @[email protected]   return 1 end --run pro DECLARE @newName varchar(20) DECLARE @oldName varchar(20) DECLARE @result 

Cpp 调用sql server 存储过程时不返回output参数解决办法

Cpp 调用sql server 存储过程时不返回output参数,但是在ssms中调用的时候能正常返回,貌似数据库和应用代码是一切正常,再测试用c#调用也能正常获取output参数,在存储过程的的开始加上set nocount on,就能解决这个问题. 墙外原文件:点击打开链接

SQL Server 存储过程(转载)

SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储

14、SQL Server 存储过程

SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或多个结果集. 存储过程带来的好处: 1.性能的提升 存储过程执行时,第一次会进行编译和优化.但批处理T-SQL语句每次执行都需要预编译和优化,所以没有存储过程快. 2.易于维护 存储过程创建后存储在数据库中,可以被程序多次调用执行.当需要修改存储过程时,对应用程序代码毫无影响. 3.安全性 应用程序

SQL Server 存储过程、触发器、游标

存储过程 1.存储过程是事先编好的.存储在数据库中的程序,这些程序用来完成对数据库的指定操作. 2.系统存储过程: SQL Server本身提供了一些存储过程,用于管理有关数据库和用户的信息. 用户存储过程: 用户也可以编写自己的存储过程,并把它存放在数据库中,供客户端调用. 3.这样安排的主要目的就是要充分发挥数据库服务器的功能,尽量减少网络上的堵塞. 4.系统存储过程 概念: 它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务. 系统存储过程可

[转]SQL Server 存储过程 一些常用用法(事物、异常捕捉、循环)

Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. ? 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进

SQL Server 存储过程(转)

SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储