存储过程中动态SQL中的传入参数为datetime类型的问题

存储过程中动态SQL中的传入参数为datetime类型的问题,第1张

你先调试一下,少了个@和begin、end

另外,拼接变量不能在字符串内啊,这样没用

create procedure [dbo].[baobiao1]

@date1 datetime,

@date2 datetime

as

set nocount on

begin

Set XACT_ABORT ON

Begin Tran

Declare @SQL1 varchar(8000)

Declare @SQL2 varchar(8000)

--Set @SQL='Create view A as select ....'

--Exec(@SQL)

if exists (SELECT * FROM sysobjects WHERE name = 'report1')

begin

drop view report1

end

set @SQL1='create view report1 as select s.englishName,s.belongzu,count(*) kaitai,

jiachan=(case s.shiftName when ''甲'' then sum(s.realproduc) else 0 end),

jiachaochan=(case s.shiftName when ''甲'' then sum(s.realproduc-s.singleplan*s.workminute/60) else 0 end),

yichan=(case s.shiftName when ''乙'' then sum(s.realproduc) else 0 end),

yichaochan=(case s.shiftName when ''乙'' then sum(s.realproduc-s.singleplan*s.workminute/60) else 0 end),

bingchan=(case s.shiftName when''丙''then sum(s.realproduc) else 0 end),

bingchaochan=(case s.shiftName when''丙''then sum(s.realproduc-s.singleplan*s.workminute/60) else 0 end),

dingchan=(case s.shiftName when''丁''then sum(s.realproduc) else 0 end),

dingchaochan=(case s.shiftName when''丁''then sum(s.realproduc-s.singleplan*s.workminute/60) else 0 end),

(case when s.shiftName =''甲''then sum(p.cibushu) else 0 end) jiacibu,

(case when s.shiftName =''乙''then sum(p.cibushu) else 0 end) yicibu,

(case when s.shiftName =''丙''then sum(p.cibushu) else 0 end) bingcibu,

(case when s.shiftName =''丁''then sum(p.cibushu) else 0 end) dingcibu,

(case when s.shiftName =''甲''then sum(p.kaijianshu) else 0 end) jiakaijian,

(case when s.shiftName =''乙''then sum(p.kaijianshu) else 0 end) yikaijian,

(case when s.shiftName =''丙''then sum(p.kaijianshu) else 0 end) bingkaijian,

(case when s.shiftName =''丁''then sum(p.kaijianshu) else 0 end) dingkaijian

from HistoryPro1 s left outer join kaijianjicibu2 p on s.wholeDate = p.wholeDate AND

s.MachineID = p.MachineID AND

s.shiftName = p.shiftName where s.wholeDate >=‘+@date1+‘ and s.wholeDate <=’+@date2=‘ group by s.englishName,s.belongzu,s.shiftName'

exec(@SQL1)

commit Tran

end

set nocount on

GO

前言

VB对数据库的编程有多种方法,如:ODBC API编程、RDO(远程数据对象)、DAO(数据访问对象)、ADO(ActiveX 数据对象)方法编程实现方便、快捷,但灵活性稍差。由于存储过程具有实现数据封装、隐藏以及代码的预编译、减少网络负载、维护方便等优点,所以被许多RDMBS和编程工具做支持。VB中的各类数据对象均都提供对存储过程的支持。所以要灵活掌握调用存储过程这一技术是十分必要。现在将VB中实现动态调用含DateTime类型的存储过程介绍给读者,让您很快掌握和运用这个方法,解决你身边的问题。

一、 简述SQL Server 2000 日期时间类型(含dateTime类型字段)

该类型是由有效的日期或时间组成;年-月-日 小时:分:秒.千分之秒。其格式:

在现阶段开发设计ERP系统项目中,尤其在创建数据库表结构时,均要考虑到DateTime字段的应用,它能记载信息发生时间段的信息,能充分反映该区间数据变化;除特殊情况下(如:网吧、游戏吧等需记录小时、分、秒)之外,一般要考虑到日期范围即:[年、月、日]。

二、 我们以ADO为例来说明其实现步骤

现在动态调用含有DateTime字段的存储过程,以帮助理解和掌握调用存储过方法:

1>、使用Northwind的MS SQL中的例子库(此例子SQL Server2000自带)

Create procedure "Employee Sales by Country"

 @Beginning_Date DateTime, @Ending_Date DateTime AS

 SELECT Employees.Country, Employees.LastName, Employees.FirstName,

 Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal AS SaleAmount

 FROM Employees INNER JOIN

(Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID)

ON Employees.EmployeeID = Orders.EmployeeID

WHERE Orders.ShippedDate Between @Beginning_Date And @Ending_Date

GO

2>、在VB中生成一个新工程,工程添加一个窗体,三个Command(1,2,3)按钮,一个ListView控件,两个日期DTpicker控件,两个标签Label控件,一个文本TextBox控件。

3>、编程的设计思路

基于SQL Server数据库表结构定义DateTime类型的特点,我们采取截取有效日期部分,实现对这个含有DateTime字段的存储过程动态调用,具体步骤如下:

①.定义:Dim Dt10,DT20 as Variant

②.采集动态日期赋值于以上两个变量中

DT10 = Format(Trim(DT1.Value), "yyyy-mm-dd")

DT20 = Format(Trim(DT2.Value), "yyyy-mm-dd")

具备以上条件,可快捷、方便地获取动态日期区间内数据表的结果集。

下面就严格执行调用存储过程语法格式就可以了。请详见VB的代码。

mysql 存储过程如何定义datetime类型的变量或者该怎么处理

DELIMITER $$

DROP PROCEDURE IF EXISTS `datatime`$$

CREATE

/*[DEFINER = { user | CURRENT_USER }]*/

PROCEDURE `iccsdb`.`datatime`()

/*LANGUAGE SQL

| [NOT] DETERMINISTIC

| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

| SQL SECURITY { DEFINER | INVOKER }

| COMMENT 'string'*/

BEGIN

DECLARE dattime DATETIME DEFAULT '2013-10-10'

SELECT dattime FROM DUAL

END$$

DELIMITER

跟字符串一样的处理,当然还有一些 特殊的 时间处理函数


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11538340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存