1

我正在使用带有 TSQL 的 Sybase DB。

我正在尝试在 2 个 SPROCS 之间工作,一个嵌套在另一个 SPROCS 中。

我的外部 SPROC 将创建一个临时表#temp_table并将其填充为 200 的值。一旦临时表填充了 200 个条目,内部 SPROC 将使用它来处理JOIN.

所以本质上,我的外部 SPROC 将具有以下(简化):

CREATE TABLE #temp_table 
(
  ... columns ...
)

我的内部 SPROC 将具有以下内容:

SELECT
  SOME_COLUMNS
FROM
  SOME_TABLE
INNER JOIN
  #temp_table
ON
  SOME_CONDITION

当我尝试对此进行测试时,我为我的内部 SPROC 运行脚本,它抱怨#temp_table不存在,并且无法在数据库中创建 SPROC。因此,当我尝试运行外部 SPROC 时,它也会失败。

我可以请一些关于如何解决这个问题的指示吗?

4

2 回答 2

3

不要在两个存储过程中执行此操作。一站式完成。一个存储过程可以有尽可能多的 SQL 语句来完成工作,并且临时表仅在创建它的存储过程的上下文中可用。

CREATE PROC DoItAll
AS

   CREATE TABLE #temp_table 
   (
     ... columns ...
   );

   SELECT
     SOME_COLUMNS
   FROM
     SOME_TABLE
   INNER JOIN
     #temp_table
   ON
     SOME_CONDITION;
于 2012-08-21T18:24:52.297 回答
1

您可以在创建过程之前创建表:

CREATE TABLE #temp_table 
(
  ... columns ...
)
go

CREATE PROC DoItAll
AS


   SELECT
     SOME_COLUMNS
   FROM
     SOME_TABLE
   INNER JOIN
     #temp_table
   ON
     SOME_CONDITION
go

我在工作中经常这样做,在程序之间发送多个数据。

于 2012-08-21T19:10:40.180 回答