存档

文章标签 ‘SQL’

设计数据库函数按层次显示菜单

2010年5月23日 5 条评论 98 views

show_menu_level_1show_menu_level_2

CREATE FUNCTION fnShowMenu()
RETURNS @menu_table TABLE(MenuItem VARCHAR(50) NOT NULL)
AS
BEGIN
	INSERT @menu_table
	SELECT REPLICATE('  ', menu_level)+menuitem FROM menu
	ORDER BY menuitem_orderid
 
	RETURN
END
分类: Code 标签:

设计数据库函数显示某仓库从某一时间开始的与某往来单位相关的所有凭证

2010年5月22日 没有评论 38 views

fnGetAllAccept_1

一、首先在数据库 Northwind 下建表

CREATE TABLE [dbo].[AcceptBlotter] ( -- 凭证头
 
[Acc_id] INT IDENTITY (1, 1) NOT NULL , -- 凭证内部 ID
 
[Acc_code] CHAR(10) NOT NULL , -- 凭证号码
 
[Wh_id] INT NULL , -- 仓库 ID
 
[Cust_id] INT NULL , -- 往来单位 ID
 
[Acc_date] datetime NOT NULL , -- 凭证日期
 
[Acc_type] SMALLINT NOT NULL , -- 凭证类型
 
[Acc_remark] VARCHAR(100) NULL -- 备注
 
) ON [PRIMARY]
 
CREATE TABLE [dbo].[AcceptItem] ( -- 凭证明细
 
[Acc_id] INT NOT NULL , -- 凭证内部 ID
 
[Accept_no] tinyint NOT NULL , -- 明细序号
 
[Pro_id] INT NOT NULL , -- 商品 ID
 
[Accept_price] money NOT NULL , -- 明细中的商品价格
 
[Accept_amount] NUMERIC(9, 2) NOT NULL , -- 商品数量
 
[Accept_money] money NOT NULL -- 合计金额
 
) ON [PRIMARY]

阅读全文…

分类: Code 标签:

存储过程实现先进先出货物出库

2010年4月26日 没有评论 114 views


第一次,150件出库:num1中已有180件,出库后剩余30件,均价100(上图)


第一次,150件出库:num1中出剩余30件,num2中出120件,出库后剩余80件,均价260(上图)


第三次,150件出库:由于totNum即总量为0,因此不执行出库操作。
阅读全文…

分类: Code 标签: ,

jsp+ms sql server2000 2005 2008不同版本的连接驱动

2010年4月5日 没有评论 582 views
//for SQL Server 2000
String DBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String DBLocation="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=dbname"; //dbname就是要连接的数据库名
String DBUser="sa";
String DBPwd="sa";
// for SQL Server 2008/2005
String DBDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String DBLocation="jdbc:sqlserver://localhost:1433;DatabaseName=dbname"; //dbname就是要连接的数据库名
String DBUser="sa";
String DBPwd="sa";

另外,连接前先确保有对应的jdbc驱动库,这里附上传送门:Microsoft SQL Server JDBC Driver 2.0

分类: Code 标签: , , ,

mssql server查询指定行数的记录(用于分页记录)

2010年3月26日 没有评论 269 views

查询第X页,每页Y条记录

最基本的处理方法(原理):

如果表中有主键(记录不重复的字段也可以),可以用类似下面的方法,当然y,(x-1)*y要换成具体的数字,不能用变量:

SELECT top y * FROMWHERE 主键 NOT IN(SELECT top (x-1)*y 主键 FROM)

如果表中无主键,可以用临时表,加标识字段解决.这里的x,y可以用变量.

SELECT id=IDENTITY(INT,1,1),*  INTO #tb FROMSELECT * FROM #tb WHERE id BETWEEN (x-1)*y AND x*y-1
分类: Code 标签: ,

实验07——SQL练习

2008年12月9日 没有评论 1,494 views

1.  创建视图V_SupplyCount,显示供应商编号,以及该供应商供应的产品的品种数(非CategoryID),该视图包含两个字段:SupplierID、ProductCount。
[codes=sql]
create view V_SupplyCount(SupplierID,ProductCount)
as select SupplierID,count(ProductID) from products group by SupplierID
[/codes]

2.  创建视图V_OrderCount,显示顾客编号,顾客所下订单的产品总金额(金额=单价×数量×折扣),该视图包含两个字段:CustomerID,TotalFee。
[codes=sql]
create view V_OrderCount(CustomerID,TotalFee)
as
select CustomerID,sum(UnitPrice*Quantity*Discount) from orders,orderdetails
where orders.OrderID=orderdetails.OrderID group by CustomerID
[/codes]
阅读全文…

分类: Code 标签: