【问题标题】:Find Stored Procedure that Inserts Into a Specific Table teradata查找插入特定表的存储过程 teradata
【发布时间】:2017-12-08 05:14:45
【问题描述】:

如何找出用于在 teradata 中加载特定表的存储过程(使用 SQl 查询)?

【问题讨论】:

  • 你不能,获取SP源代码的唯一方法是SHOW PROCEDURE。

标签: sql teradata


【解决方案1】:

这不会产生确切的结果,但它可能有助于为您指明正确的方向。您可以在 dbc.dbqlogtbl 中查询 INSERT 到表中,获取 sessionid 并为 CALL statementTypes 查找 dbc.dbqlogtbl 条目。

再次......这里是一粒盐,但它可能会产生一些有趣的东西:

SELECT *
FROM dbc.dbqlogtbl
WHERE sessionid IN (
        SELECT sessionId
        FROM dbc.dbqlogtbl
        WHERE statementtype = 'INSERT'
            AND username = '<usrname>' /*username that executes the procedure if available*/
            AND querytext LIKE '%yourdatabase.yourtable%'
        )
    AND statementtype = 'Call'

或者,您可以只为您的 proc 转储所有 SPL,然后按 Ctrl+F 直到获得成功。

【讨论】:

  • 不错。 CallNestingLevel 表示查询是由 SP 提交的,requestnum 在 SP 中不会更改,您可以使用以下命令直接获取 SP 名称:WHERE StatementType = 'Call' AND ( sessionid, requestnum) IN ( SELECT sessionid, requestnum FROM dbc.qrylogv WHERE CallNestingLevel &gt; 0 AND .... );
猜你喜欢
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 2018-01-09
  • 2015-04-12
  • 2020-06-04
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多