如何在sqlserver的存储过程中,实现根据输入的参数获取数据表中的对应列的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在sqlserver的存储过程中,实现根据输入的参数获取数据表中的对应列的数据相关的知识,希望对你有一定的参考价值。

假如数据表有a,b两字段,如果输入参数为a,则获取出表中a列的数据,如果输入餐宿为b,则获取表中b列的数据

参考技术A 判断一下就OK了啊,if @u="a" then select a from 表 if @u="b" then select b from 表追问

因为表字段有100多个,不想一个个判断,有没有更好的方法,谢谢

如何在sqlserver存储过程中输出参数,语句是啥,我不用输出参数,我只是在体内输出语句,请问是啥??

参考技术A 在定义时定义一个ouput参数,如以下存储过程根据时间产生一个唯一ID
CREATE PROCEDURE [getid](@id char(17) OUTPUT)--产生唯一码
AS
DECLARE @a datetime
select @a=getdate()
DECLARE @time1 char(10)
DECLARE @time2 char(10)
DECLARE @time3 char(10)
DECLARE @time4 char(10)
DECLARE @time5 char(10)
DECLARE @time6 char(10)
DECLARE @time7 char(10)
Select @time1=str(Datename(year,@a))
Select @time2=str(Datename(month,@a))
if Datename(month,@a)<10 select @time2='0'+rtrim(ltrim(@time2))
Select @time3=str(Datename(day,@a))
if Datename(day,@a)<10 select @time3='0'+rtrim(ltrim(@time3))
select @time4=str(Datename(hour,@a))
if Datename(hour,@a)<10 select @time4='0'+rtrim(ltrim(@time4))
Select @time5=str(Datename(minute,@a))
if Datename(minute,@a)<10 select @time5='0'+rtrim(ltrim(@time5))
Select @time6=str(Datename(second,@a))
if Datename(second,@a)<10 select @time6='0'+rtrim(ltrim(@time6))
Select @time7=str(Datename(Millisecond,@a))
if Datename(Millisecond,@a)<10 select @time7='0'+rtrim(ltrim(@time7))
if Datename(Millisecond,@a)<100 select @time7='0'+rtrim(ltrim(@time7))
select @id=ltrim(rtrim(@time1))+ltrim(rtrim(@time2))+ltrim(rtrim(@time3))+ltrim(rtrim(@time4))+ltrim(rtrim(@time5))+ltrim(rtrim(@time6))+ltrim(rtrim(@time7))
GO
在其它存储过程中用下例语句调用以上这个存储过程,如下
DECLARE @id char(17)
EXEC [getid] @id OUTPUT
这样@id就可以得到getid的返回值了
参考技术B exec 存储过程名 参数=*

比如预先设置的参数为 @yy datetime 存储过程名为 procedure_test
那么语句就是
exec procedure_test @yy='日期'

其中日期是你要输入的条件本回答被提问者和网友采纳
参考技术C 创建存储过程时,在需要输出的参数后面 加上output ,
例“ create pro [dbo].[run]
@a varchar(50) output
select @a=[a1] from [Table] where ....

执行存储过程 declare a varchar(50)
exec [run] a
select a

你要输出语句的话,将要输出的参数等于你想要的语句即可追问

output不是输出参数吗,我的意思是在存储过程体内输出语句,类型oracle存储过程中的dbms.output.printline('xxxx');,明白否?在sqlserver中有没有类似这样的语句。。、。。

追答

print 语句

参考技术D 输出就用 return 不输出 用关键字 void 第5个回答  2011-04-28 print 'aaaaaaaaaaaaa'
如果是参数就是
print @aa

以上是关于如何在sqlserver的存储过程中,实现根据输入的参数获取数据表中的对应列的数据的主要内容,如果未能解决你的问题,请参考以下文章

sql server:如何设置自动执行的存储过程?

如何在sql server中创建一个存储过程中的varchar型的输入参数默认值为空

sql 存储过程输入参数个数不定的写法

如何使用输入参数创建 PL/SQL 存储过程以返回数据集

sql2008存储过程可以直接根据json生成表吗

sqlserver 存储过程 保存在哪张表里如何通过select语句查询哪些存储过程是包含某个关键词