3個下面的語句正常工作,但是當我裹着他們在一個存儲過程,我收到此錯誤信息:sp_rename存儲過程中不能正常工作時,連續執行
消息207,級別16,狀態1,第10行
無效的列名'split'。
消息207,級別16,狀態1,行9
無效的列名'拆分'。
過程定義:
CREATE procedure [dbo].[dsplit_SITEL_update]
as
begin
set nocount on;
IF EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'split_' AND [object_id] = OBJECT_ID(N'dsplit_SITEL$'))
exec sp_rename @objname = N'dsplit_SITEL$.split_',
@newname = 'split',
@objtype = 'COLUMN';
insert into dsplit_SITEL
select
CONVERT(varchar(10), b.row_date, 120) + '_' + CONVERT(nvarchar(10), b.split),
b.*
from dsplit_SITEL a
right join dsplit_SITEL$ b ON a.pk = CONVERT(varchar(10), b.row_date, 120) + '_' + CONVERT(nvarchar(10), b.split)
where a.pk is null and b.row_date is not null;
if OBJECT_ID('dsplit_SITEL$', 'U') is not null
drop table dsplit_SITEL$;
END
這到底是怎麼回事,我怎麼能有程序的工作?
也許不是重點,但你爲什麼不只是使用的列如果您打算在程序結束時刪除整個表格,那麼它的名稱不會修改? –
事情是我使用dsplit_SITEL $作爲臨時表來更新主dsplit_SITEL。問題是,有時候他們發送帶有不正確的列名稱的尾部下劃線:'split_'而不是'split' – Maju
這應該不重要。 INSERT ... SELECT的'SELECT'子句中的列名不會用於任何事情,而且您正在使用'SELECT *',因此任何一個表都可以工作。 –