开发者社区
第1页:将Access移植到SQL Server第2页:将Access移植到SQL Server
对于Access而言,你调用的是存储程序,然后传递所有相关控件的数值,而不管这些数值是否为Null:
EXEC mySproc Value1, Value2,. . .ValueN
然后,存储程序如上所示地处理这些Null值。可以想象到,存储程序选择用户提供的值,然后传递一个值(比如12345)并返回到一行,接着OR语句被调用。由于参数为Null,返回所有行的值。
这里是说明这一技巧使用过程的Northwind数据库范例。在这一范例中,在特定日期被传递之前,我们列举了所有的定单:
这里是说明这一技巧使用过程的
CREATE PROCEDURE dbo.OrdersListSproc1 (@OrderDateDateTime) AS SELECT dbo.Orders.* FROM dbo.Orders WHERE (OrderDate < CONVERT(DATETIME, '1996-08-01 00:00:00', 102)) OR (@OrderDate IS NULL)
CREATE PROCEDURE dbo.OrdersListSproc1
(@OrderDateDateTime)
AS SELECT dbo.Orders.*
FROM dbo.Orders
WHERE (OrderDate < CONVERT(DATETIME, '1996-08-01 00:00:00', 102))
OR (@OrderDate IS NULL)
虽然存储程序无法总是以这种方式取代动态SQL,但这种方法通常可以提高程序的性能。