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 outputas
set @c = @a + @b
go
调用:
declare @v intexecute 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的存储过程并获取返回结果集及出参等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)