Omn*_*Owl 1 t-sql sql-server stored-procedures sql-server-2012
所以这可能只是我对程序的了解不够,但我正在尝试创建一个更新表中的列以删除尾随空格的过程,因为它是我们最近在工作中经常出现的.
这是因为我们处于从旧系统到新系统的过渡阶段,因此我们还建立了一个新的数据库.旧数据库使用nvarchar nchar,这意味着即使您不使用所有插槽的字符,它也会用空格填充其余的插槽.在新数据库中虽然我们使用varchar所以我们想摆脱空白!
所以这非常方便:
UPDATE table SET column = LTRIM( RTRIM( column ) );
Run Code Online (Sandbox Code Playgroud)
所以我试图制作一个程序,因为我们必须偶尔使用它:
USE omitted
GO
CREATE PROCEDURE TrimTrailingSpaces
@table VARCHAR(50),
@column VARCHAR(50)
AS
BEGIN
UPDATE @table
SET
@column = LTRIM( RTRIM( @column ) );
END
GO
Run Code Online (Sandbox Code Playgroud)
但每当我尝试执行此操作时,我都会收到错误消息:
Msg 1087,Level 16,State 1,Procedure TrimTrailingSpaces,Line 6 [Batch Start Line 2]:必须声明表变量"@table".
我正在做什么是不可能的?
USE omitted
GO
CREATE PROCEDURE TrimTrailingSpaces
@table_name VARCHAR(50),
@column_name VARCHAR(50)
AS
BEGIN
declare @sql varchar(200);
set @sql='UPDATE ' + QUOTENAME(@table_name)
+' SET '+ @column_name+ ' = LTRIM( RTRIM( ' + QUOTENAME(@column_name) +' ) )';
END
GO
Run Code Online (Sandbox Code Playgroud)
你需要使用动态sql.表名不能作为UPDATE查询中的变量给出.还要将变量名称更改为SQL中的关键字以外的其他名
| 归档时间: |
|
| 查看次数: |
6663 次 |
| 最近记录: |