【问题标题】:Results are not showing, only says "Commands completed successfully" [closed]结果未显示,仅显示“命令已成功完成”[关闭]
【发布时间】:2021-10-14 18:00:45
【问题描述】:

我最近开始研究 TSQL 中的存储过程,我正在使用 SSMS 2018。当我执行我处理的前两个存储过程时,结果仍然显示。

但是,过了一会儿,消息窗口只显示“命令已成功完成”,但不再显示结果。

见下面的代码:

USE ALEX_DB --my database name
GO

IF OBJECT_ID ('dbo.practice', 'P') IS NOT NULL --Identifies if there is an existing procedure
    DROP PROCEDURE dbo.practice; --Drops if procedure exists
GO

CREATE PROCEDURE dbo.practice 
AS
SELECT
    CONVERT(VARCHAR, TSM.TXN_DATE, 1) AS 'Transaction Date', 
    TCA.FIRST_NAME + ' ' + TCA.LAST_NAME AS 'Customer', 
    TSM.CUST_ID AS 'Customer ID', 
    TSM.TXN_NO AS 'Reference No.'
FROM TXN_SALES_MAST AS TSM
INNER JOIN TXN_CUST_ACCT AS TCA ON TCA.CUST_ID = TSM.CUST_ID

EXECUTE dbo.practice

当我自己运行 SELECT 语句时,它没有在存储过程中,它会将结果显示到网格中。但是,当我尝试执行存储过程时,SSMS 不再显示任何结果。

【问题讨论】:

  • CREATEEXECUTE 之间是否有批处理分隔符,或者您是否分批运行它们?如果没有,那么上面将创建一个过程,dbo.practice,它会无限地调用自己。
  • 如果你运行了那个确切的脚本,你就创建了一个运行SELECT的存储过程,然后尝试递归地执行自己
  • 我注意到我在 CREATE 和 EXECUTE 之间没有分隔符。非常感谢您的帮助!
  • 另外,养成为数据类型定义长度、比例和精度的习惯。此外,一般不建议使用语法{Expression} AS 'Alias'。单引号 (') 用于文字字符串;使用它们作为别名,虽然有效,但可能会令人困惑(对于新老用户来说),这是语法工作的唯一地方。例如,ORDER BY 'Customer ID' 不会按别名为 'Customer ID' 的列对数据进行排序。

标签: sql sql-server stored-procedures ssms


【解决方案1】:

create procedure 块之后添加GO

USE ALEX_DB --my database name
GO

IF OBJECT_ID ('dbo.practice', 'P') IS NOT NULL --Identifies if there is an existing procedure
    DROP PROCEDURE dbo.practice; --Drops if procedure exists
GO

CREATE PROCEDURE dbo.practice 
AS
SELECT
    CONVERT(VARCHAR, TSM.TXN_DATE, 1) AS 'Transaction Date', 
    TCA.FIRST_NAME + ' ' + TCA.LAST_NAME AS 'Customer', 
    TSM.CUST_ID AS 'Customer ID', 
    TSM.TXN_NO AS 'Reference No.'
FROM TXN_SALES_MAST AS TSM
INNER JOIN TXN_CUST_ACCT AS TCA ON TCA.CUST_ID = TSM.CUST_ID
GO -- here

EXECUTE dbo.practice

【讨论】:

  • 这不会改变任何事情。这仍然会创建一个无限调用自身的过程。 END 不会结束过程的定义。
  • @Larnu 编辑了答案 :) 是的,你是对的第一件事。现在肯定是正确的。
  • 嗨!这对我有用,在发布我的问题后也得到了 Larnu 的提示。十分感谢你的帮助!会记住这一点:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 2019-09-14
相关资源
最近更新 更多