我可以创建一个查询来存储我的过程以应用于 Access/SQL 中具有相同结构的不同表吗?
Can I create a query to store my procedure to apply on different tables with same structure in Access/SQL?
我知道在 SQL 中,您可以存储过程并保存查询以便在同一个 table 上进一步使用。
例如,如果您创建此查询:
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;
那么你可以这样做:
EXEC SelectAllCustomers City = "London", PostalCode = "WA1 1DP";
或
EXEC SelectAllCustomers City = "Beijing", PostalCode = "100010";
我是否也可以通过设置 table 名称作为参数来保存特定程序并应用于不同的 table?
例如,在管理月度历史报告时会很有帮助,因为每个月都必须重复相同的数据分析过程。
你的标题有点令人困惑,因为你说的是“不同的”table,但你所有的例子都适用于一个 table(所以这里很混乱)。
至于提供参数?是的,这很常见,但不存在对某些存储过程的要求。
实现此目的的最佳方法是使用 Access 的“内置”功能“即时”提供参数。这样你就不必提前知道、关心或“计划”。
因此您可以为报告提供“即时”参数。只需将报告基于原始 table(或查询)即可。
然后,您可以使用 openReport 的“where”子句为报表提供参数。
例如:
Docmd.OpenReport "rptSales",acViewPreview,,"City = 'Edmonton'"
所以上面将打开报告并限制到一个城市。请注意,访问是智能的,如果您的后端是网络上的访问后端,或者 sql 服务器后端,那么只有满足您条件的记录才会被拉下网络管道...
所以只需使用 openReport 的“where”子句。它是任何有效的 sql “where” 子句——甚至子查询也可以在那个 were 子句中使用。无需使用存储过程,创建具有“已知”参数的存储过程。无论如何,这样做的性能都是零——所以使用 Access 内置的“where”子句来根据某些提供的条件过滤或限制记录。
我知道在 SQL 中,您可以存储过程并保存查询以便在同一个 table 上进一步使用。
例如,如果您创建此查询:
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;
那么你可以这样做:
EXEC SelectAllCustomers City = "London", PostalCode = "WA1 1DP";
或
EXEC SelectAllCustomers City = "Beijing", PostalCode = "100010";
我是否也可以通过设置 table 名称作为参数来保存特定程序并应用于不同的 table?
例如,在管理月度历史报告时会很有帮助,因为每个月都必须重复相同的数据分析过程。
你的标题有点令人困惑,因为你说的是“不同的”table,但你所有的例子都适用于一个 table(所以这里很混乱)。
至于提供参数?是的,这很常见,但不存在对某些存储过程的要求。
实现此目的的最佳方法是使用 Access 的“内置”功能“即时”提供参数。这样你就不必提前知道、关心或“计划”。
因此您可以为报告提供“即时”参数。只需将报告基于原始 table(或查询)即可。
然后,您可以使用 openReport 的“where”子句为报表提供参数。
例如:
Docmd.OpenReport "rptSales",acViewPreview,,"City = 'Edmonton'"
所以上面将打开报告并限制到一个城市。请注意,访问是智能的,如果您的后端是网络上的访问后端,或者 sql 服务器后端,那么只有满足您条件的记录才会被拉下网络管道...
所以只需使用 openReport 的“where”子句。它是任何有效的 sql “where” 子句——甚至子查询也可以在那个 were 子句中使用。无需使用存储过程,创建具有“已知”参数的存储过程。无论如何,这样做的性能都是零——所以使用 Access 内置的“where”子句来根据某些提供的条件过滤或限制记录。