【发布时间】:2020-12-05 08:25:35
【问题描述】:
我有以下正在尝试的存储过程:
- 执行系统存储过程 (sp_monitorconfig) 并将结果集放入临时表中。
- 从这个临时表中选择并添加 2 个自定义列(SOURCESERVER 和 CollectionTime)
- 此最终结果集将通过 jdbc 作业摄取到 Logstash。
我目前正在使用 SAP ASE 16 (sybase),在关键字“exec”处遇到不正确的语法错误。我不确定我是否必须为存储的过程添加前缀或什么,但我目前很难过,感谢任何帮助。
USE db
GO
CREATE PROCEDURE sp_active_con_ratio.sql AS
DECLARE @servername varchar(32) DECLARE @collecttime DATETIME DECLARE @procparam varchar(32)
select
@servername = @@servername
select
@collecttime = getdate()
select
@procparam = 'number of user connections' CREATE TABLE #TempUserConnections
(
TempName varchar(35),
FreeConnections int,
ActiveConnections int,
PercentActive char(6),
MaxUsed int,
Reuse_cnt int,
Instance_Name varchar(30) NULL
)
INSERT INTO
#TempUserConnections (TempName, FreeConnections, ActiveConnections, PercentActive, MaxUsed, Reuse_cnt, Instance_Name)
exec sp_monitorconfig @procparam **ERROR HERE**
SELECT
@servername AS 'SOURCESERVER',
FreeConnections,
ActiveConnections,
PercentActive,
MaxUsed,
@collecttime AS 'CollectionTime'
FROM
#TempUserConnections
DROP TABLE #TempUserConnections
RETURN
GO
谢谢!
【问题讨论】:
-
你没有告诉我们什么那个错误是什么。此外,
sp_是 Microsoft 保留的前缀,不应用于用户过程。 -
@Larnu 感谢您的评论。抱歉,错误只是“关键字 exec 附近的语法不正确”。另外,我更改了 db 名称和 sp 名称,因为它们都包含公司信息 :)
-
@basement 此代码在我的环境中运行没有错误!。
-
insert / exec在 Sybase ASE 中不受支持;虽然你可以use a proxy table to insert proc output into a table 这有点令人费解;你最好的选择是从sp_monitorconfig的源中提取所需的查询并构建你自己/自定义的 sql 来做你想做的事
标签: sql tsql stored-procedures sybase sap-ase