我正在使用带有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时,它也会失败。
我能否就如何解决这个问题找一些指示?
答案 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
我经常在工作中这样做,在程序之间发送多个数据。