sql存储过程得到某字段的值

sql存储过程得到某字段的值,第1张

sqlserver 中:

查询所有年份值:

select distinct substring(convert(char(8),ID),0,5) as 年份 from table1;

查询总共有几个年份:

select count() from(

select distinct substring(convert(char(8),ID),0,5) as 年份 from table1);

oracle中:

1、

select distinct substr(ID,0,5) as 年份 from table1;

2、

select count() from(

select distinct substr(ID,0,5) as 年份 from table1);

---

以上,希望对你有所帮助。

SQL Server中存储过程返回值不是通过return语句返回的(return语句是在用户自定义函数中使用的),而是通过存储过程的参数来返回,在定义存储过程的参数时使用关键字output来指定此参数是返回值。

而在调用存储过程时,也必须使用关键字给接收返回值的变量,这样才能在调用时获得存储过程的返回值。

示例:

create procedure dbopr_add @a int, @b int, @c int output

as

    set @c = @a + @b

go

调用:

declare @v int

execute dbopr_add 1, 2, @v output

select @v

1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称INFORMATION_SCHEMATABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2、查询SQL中所有表及列: Select dbosysobjectsname as Table_name, dbosyscolumnsname AS Column_name FROM dbosyscolumns INNER JOIN dbosysobjects ON dbosyscolumnsid = dbosysobjectsid Where (dbosysobjectsxtype = 'u') AND (NOT (dbosysobjectsname LIKE 'dtproperties')) 3、在Sql查询分析器,还有一个简单的查询方法: EXEC sp_MSforeachtable @command1="sp_spaceused ''" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count() 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束L = 日志FN = 标量函数

IF = 内嵌表函数

P = 存储过程

PK = PRIMARY KEY 约束(类型是 K)

RF = 复制筛选存储过程S = 系统表TF = 表函数

TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjectsname from sysobjectsxtype ='U';SELECT name

WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status>0,即:select from sysobjects where xtype='U' and status>0

请参参考以下代码:

from pyodbc import drivers, connect, Connection, Cursor

def output_cursor(cursor: Cursor):

"""打印输出当前结果集"""

print('-' 80)

print(','join(_[0] for _ in rstdescription))

for row in cursor:

print(row)

spt = '''

declare @returns int,@count int,@lastDoTime datetime

exec @returns = test_proc_call @count output,@lastDoTime output

select @returns returns,@count count,@lastDoTime lastDoTime

'''

cur = dbexecute(spt)

for rst in iter_cursor(cur):

output_cursor(rst)

输出:

--------------------------------------------------------------------------------

returns,count,lastDoTime

(18, 21, datetimedatetime(2020, 3, 4, 14, 43, 46, 923000))

存储过程:test_proc_call  

create procedure test_proc_call

  (@p1 int output

  ,@p2 datetime output

   )

as

begin

  --此过程有返回值,有output参数,有结果集

  select @p1=max(id),@p2=max(LastDoTime)

          from Tasks with(nolock)

  select from Tasks with(nolock)

  return @@rowcount

end

1OUPUT参数返回值

CREATEPROCEDURE[dbo][nb_order_insert](

@o_buyeridint,

@o_idbigintOUTPUT

)

AS

BEGIN

SETNOCOUNTON;

BEGIN

INSERTINTO[Order](o_buyerid)

VALUES(@o_buyerid)

SET@o_id=@@IDENTITY

END

END2存储过程中获得方法:

DECLARE@o_buyeridint

DECLARE@o_idbigint

DECLARE@resultbit

EXEC@result=[nb_order_insert]@o_buyerid,o_idoutput3SELECT 数据集返回值

CREATEPROCEDURE[dbo][nb_order_select](

@o_idint

)

AS

BEGIN

SETNOCOUNTON;

SELECTo_id,o_buyeridFROM[Order]

WHEREo_id=@o_id

GO

SELECT

FROM

表名

WHERE

字段

BETWEEN

值1

AND

值2

如SELECT

FROM

employee

WHRER

wages

BETWEEN

2000

AND

3000

补充:

可能你设计的时间是基于12小时制的吧。

把时间改成

24小时制

,就不会混淆下午时间和凌晨的时间。

要么就是

打卡

后,在数据库中加入系统时间。

请看看如下的SQL

create or replace procedure p_test_1 is

begin

insert into X2 (ID,FMModel,FName,FNuber,FUnit)

select pID,pFMModel,pFName,pFNuber,pFUnit

from X1 p;

commit;

end p_test_1;

希望能帮到你。

以上就是关于sql存储过程得到某字段的值全部的内容,包括:sql存储过程得到某字段的值、在 sql select 语句中 如何获取 存储过程的返回值、PHP如何调用SQLServer2012的存储过程并获取返回结果集及出参等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10160501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存