数据库鸡和鸡蛋问题

时间:2012-08-21 18:21:46

标签: tsql stored-procedures sybase

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

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

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

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

JOIN

我内心的SPROC将有以下内容:

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

当我尝试测试时,我运行内部SPROC的脚本并且它抱怨SELECT SOME_COLUMNS FROM SOME_TABLE INNER JOIN #temp_table ON SOME_CONDITION 不存在,并且无法在数据库中创建SPROC。因此,当我尝试运行我的外部SPROC时,它也会失败。

我能否就如何解决这个问题找一些指示?

2 个答案:

答案 0 :(得分:3)

不要在两个存储过程中执行此操作。一气呵成。单个存储过程可以包含完成任务所需的SQL语句,并且临时表仅在创建它的存储过程的上下文中可用。

CREATE PROC DoItAll
AS

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

   SELECT
     SOME_COLUMNS
   FROM
     SOME_TABLE
   INNER JOIN
     #temp_table
   ON
     SOME_CONDITION;

答案 1 :(得分: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

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