首页 新闻 搜索 专区 学院

SQL创建存储过程,定义临时表变量@table,执行完后,代码没有了

0
悬赏园豆:10 [已解决问题] 解决于 2014-10-08 11:28
IF EXISTS ( SELECT  A = 1
            FROM    sys.objects
            WHERE   name = 'TSL_SAP_FI_PT_PRChange '
                    AND type = 'P' ) 
    DROP PROCEDURE dbo.TSL_SAP_FI_PT_PRChange
 
go
 
IF EXISTS ( SELECT  A = 1
            FROM    sys.table_types
            WHERE   name = 'tempPRC '
                    AND is_user_defined = 1 ) 
    DROP TYPE dbo.tempPRC


go

CREATE TYPE dbo.tempPRC AS TABLE
(
PT_PCURR  decimal(15, 2),
MATNR   varchar(18)
)


go


CREATE PROCEDURE dbo.TSL_SAP_FI_PT_PRChange
    (
      @User AS dbo.tempPRC READONLY
    )
AS 
    BEGIN
  SELECT * FROM @User ;
  END

这段代码执行完后

除了

CREATE PROCEDURE dbo.TSL_SAP_FI_PT_PRChange
    (
      @User AS dbo.tempPRC READONLY
    )
AS 
    BEGIN
  SELECT * FROM @User ;
  END

在修改存储过程时,能看到,其他的代码全部找不到了。

这时我要修改

CREATE TYPE dbo.tempPRC AS TABLE
(
PT_PCURR  decimal(15, 2),
MATNR   varchar(18)
)

中的字段个数。怎么也无法修改了!!!!!

不懂勿扰,大神请神回复,跪谢!!!!!!!!!!!!!!

CTRA王大大的主页 CTRA王大大 | 初学一级 | 园豆:30
提问于:2014-09-29 14:01
< >
分享
最佳答案
0

你的其他代码是在 PROCEDURE 外面的,不属于你所定义的存储过程

收获园豆:10
大志若愚 | 小虾三级 |园豆:1093 | 2014-09-29 17:35

那我想修改 临时表变量@user  的字段 在哪改?

CTRA王大大 | 园豆:30 (初学一级) | 2014-09-30 08:57

@凡图:

直接新建,临时表一般是操作完成后,删除

IF EXISTS ( SELECT  A = 1
            FROM    sys.table_types
            WHERE   name = 'tempPRC '
                    AND is_user_defined = 1 ) 
    DROP TYPE dbo.tempPRC


go

CREATE TYPE dbo.tempPRC AS TABLE
(
PT_PCURR  decimal(15, 2),
MATNR   varchar(18),
Other nvarchar(100)
)
大志若愚 | 园豆:1093 (小虾三级) | 2014-09-30 10:14

@彭远志: 这个实在修改存储过程 代码内添加这段的么?

就如同 判断临时表#temp是否存在,存在删除那个效果么?

CTRA王大大 | 园豆:30 (初学一级) | 2014-09-30 10:17

@凡图:

CREATE TYPE dbo.tempPRC AS TABLE
(
PT_PCURR  decimal(15, 2),
MATNR   varchar(18)
)

上面代码执行完成后,是否会像临时表那样[如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表], 如果不会,在存储过程外面执行,是的话,就在里面

大志若愚 | 园豆:1093 (小虾三级) | 2014-09-30 10:38
其他回答(2)
0

真没看明白。

Firen | 园豆:5483 (大侠五级) | 2014-09-29 17:21

自己执行下就明白了,你没用过当然不懂

支持(0) 反对(0) CTRA王大大 | 园豆:30 (初学一级) | 2014-09-30 08:56
0

不知道你,是什么数据库

oracle 里 临时表会 永远存在,数据是临时(只是数据的存在 分为了 两种)

mssql  里,临时表,是不存在的 ,或者说,“存在于有限的时间内”(比如:存在于一次 存储过程中)

sybase 像是 两者的结合

 

数据库厂商真贱,一个效仿一个,究竟哪个 盗哪个都不晓得了

小资代码 | 园豆:206 (菜鸟二级) | 2014-09-30 17:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册