Chèn tập hợp kết quả thủ tục đã lưu trữ vào bảng Tạm thời và bảng tạm thời truy vấn

Aug 16 2020

Tôi có proc được lưu trữ sau đây đang cố gắng:

  1. Thực thi thủ tục lưu trữ hệ thống (sp_monitorconfig) và đặt tập hợp kết quả vào bảng tạm thời.
  2. CHỌN TỪ bảng tạm thời này và thêm 2 cột tùy chỉnh (SOURCESERVER & CollectionTime)
  3. Tập hợp kết quả cuối cùng này sẽ được nhập vào Logstash thông qua jdbc job.

Tôi hiện đang sử dụng SAP ASE 16 (sybase) và đang gặp lỗi cú pháp không chính xác ở từ khóa 'execute' . Tôi không chắc liệu mình có phải đặt tiền tố proc được lưu trữ hay không, nhưng hiện tại tôi rất bối rối và mọi sự trợ giúp đều được đánh giá cao.

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

Cảm ơn!

Trả lời

markp-fuso Aug 17 2020 at 00:28

Tôi đã quên rằng sp_monitorconfigcó một tham số đầu vào tùy chọn ( @result_tbl_name) cho phép toán tử chỉ định một bảng mà kết quả sẽ được chèn vào.

Từ tài liệu về sp_monitorconfig , Ví dụ # 8 ...

Đầu tiên, tạo bảng để chứa các kết quả; trong khi tên bảng có thể thay đổi, bạn sẽ muốn giữ tên cột / kiểu dữ liệu như đã xác định:

create table sample_table
(Name            varchar(35),
 Config_val      int,
 System_val      int,
 Total_val       int,
 Num_free        int,
 Num_active      int,
 Pct_act         char(6),
 Max_Used        int,
 Reuse_cnt       int,
 Date            varchar(30),
 Instance_Name   varchar(35))

Để nắm bắt một số chỉ số:

exec sp_monitorconfig "locks",            sample_table
exec sp_monitorconfig "number of alarms", sample_table

Số liệu hiển thị:

-- select * from sample_table
exec sp_autoformat sample_data
go
 sp_autoformat sample_table
2> go
 Name             Config_val System_val Total_val Num_free Num_active Pct_act Max_Used Reuse_cnt Date                Instance_Name
 ---------------- ---------- ---------- --------- -------- ---------- ------- -------- --------- ------------------- -------------
 number of locks       10000        942     10000     9717        283   2.83       308         0 Aug 16 2020 12:26PM              
 number of alarms        400          0       400      386         14   3.50        14         0 Aug 16 2020 12:26PM