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) )
中的字段个数。怎么也无法修改了!!!!!
不懂勿扰,大神请神回复,跪谢!!!!!!!!!!!!!!
你的其他代码是在 PROCEDURE 外面的,不属于你所定义的存储过程
那我想修改 临时表变量@user 的字段 在哪改?
@凡图:
直接新建,临时表一般是操作完成后,删除
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) )
@彭远志: 这个实在修改存储过程 代码内添加这段的么?
就如同 判断临时表#temp是否存在,存在删除那个效果么?
@凡图:
CREATE TYPE dbo.tempPRC AS TABLE ( PT_PCURR decimal(15, 2), MATNR varchar(18) )
上面代码执行完成后,是否会像临时表那样[如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表], 如果不会,在存储过程外面执行,是的话,就在里面
真没看明白。
自己执行下就明白了,你没用过当然不懂
不知道你,是什么数据库
oracle 里 临时表会 永远存在,数据是临时(只是数据的存在 分为了 两种)
mssql 里,临时表,是不存在的 ,或者说,“存在于有限的时间内”(比如:存在于一次 存储过程中)
sybase 像是 两者的结合
数据库厂商真贱,一个效仿一个,究竟哪个 盗哪个都不晓得了