【问题标题】:Sybase SQL - Stored ProcedureSybase SQL - 存储过程
【发布时间】:2019-08-06 10:25:40
【问题描述】:

我正在尝试创建一个非常简单的存储过程,它将执行以下操作:

 EXEC sp_help N’some.table’

 SELECT TOP 1000 * FROM some.table

到目前为止,我有以下内容

 CREATE PROCEDURE info_qry(@tbl)

 BEGIN

      DECLARE @tbl varchar(100)

      EXEC sp_help N’@tbl’

      SELECT TOP 1000 * FROM @tbl

END

我不知道如何在 N'' 部分之后传递 @tbl 变量,因此它被视为变量而不是常量。该怎么做?

感谢任何帮助。

对于我在移动设备上的格式化表示歉意。

【问题讨论】:

  • 哪个 Sybase RDBMS 产品(ASE?IQ?SQLAnywhere?Advantage?)和版本?我假设您想要做的是将sp_help 的输出定向到变量@tbl 引用的表中...是吗?
  • 很抱歉缺少背景信息。它是 Adaptive Server Enterprise/15.7。 (ASE)。是的,正如你所描述的,我想指导 sp_help 的输出

标签: sql variables stored-procedures sybase


【解决方案1】:

您可以使用动态 SQL:

declare @sql nvarchar(max);

set @sql = 'sp_help ''' + @tbl + '''';

exec(@sql);

【讨论】:

  • 再次感谢您的及时答复,但我仍然做错了什么。与此同时,我已经切换到 SQL 2016(在家)结束以下查询返回错误:GO; CREATE PROCEDURE infoQry(tbl nvarchar(max)) AS BEGIN DECLARE sql nvarchar(max) SET sql = 'sp_help ''' + tbl + '''' EXEC sql SELECT TOP 5 * FROM tbl END 关键字'PROCEDURE'附近的语法不正确.必须声明标量变量“tbl”。必须声明表变量“tbl”。由于评论规则,我不得不删除 @ 符号,它已添加到我的查询中。
  • 也许可以在问题中添加这个额外的信息。
猜你喜欢
  • 1970-01-01
  • 2014-07-03
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多