kab*_*oom 3 t-sql sql-server stored-procedures dynamic-sql
我有这个存储过程接受comlumn名称作为inptu参数.SELECT语句将根据输入参数选择一列
create procedure getColumn (@whichColumn varchar)
as
begin
declare @sql nvarchar(max)
set @sql = 'SELECT [' + @whichColumn + ']'
+ ' FROM myTable'
+ ' where ['+ @whichColumn + '] is not null'
+ ' and [' + @whichColumn + '] != '''' ' ;
exec sp_executesql @sql
end
Run Code Online (Sandbox Code Playgroud)
当我执行这个存储过程时,
exec getColumn 'Apple';
Run Code Online (Sandbox Code Playgroud)
错误显示"无效的列名称'A'".我不明白为什么它只获得输入的第一个字符
看看你的参数声明:
@whichColumn varchar
Run Code Online (Sandbox Code Playgroud)
如果未在数据定义或变量声明语句中指定n,则默认长度为1.
这是一封单字母varchar.尝试指定大小:
@whichColumn varchar(50)
Run Code Online (Sandbox Code Playgroud)
或者甚至更好,使用系统定义的类型对象名称:
@whichColumn sysname
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5779 次 |
| 最近记录: |