数据库中怎样声明变量

数据库中怎样声明变量,第1张

Declare @test nvarchar(1000)

Declare @test2 int

这个是声明一个test变量 类型是nvarchar类型 长度为1000 字节

还有很多类型 第二句是声明Int类型的 这种不需要写长度 因为数据库软件 比如SQL server已经规定了它的长度

本文主要主要讲解了SQL Server数据库中函数的两种用法 具体内容请参考下文

◆ 由于update里不能用存储过程 并且由于根据更新表的某些字段还要进行计算 所以很多人采用的是游标的方法 在这里我们可以用函数的方法实现

函数部分

CREATE FUNCTION [DBO] [FUN_GETTIME] (@TASKPHASEID INT)RETURNS FLOAT ASBEGINDECLARE @TASKID INT @HOUR FLOAT @PERCENT FLOAT @RETURN FLOATIF @TASKPHASEID IS NULLBEGINRETURN( )ENDSELECT @TASKID=TASKID @PERCENT=ISNULL(WORKPERCENT )/ FROM TABLETASKPHASEWHERE ID=@TASKPHASEIDSELECT @HOUR=ISNULL(TASKTIME ) FROM TABLETASKWHERE ID=@TASKIDSET @RETURN=@HOUR@PERCENTRETURN (@RETURN)END调用函数的存储过程部分 CREATE PROCEDURE [DBO] [PROC_CALCCA]@ROID INTASBEGINDECLARE @CA FLOATUPDATE TABLEFMECASETCvalue_M= ISNULL(MODERATE )ISNULL(FMERATE )ISNULL(B BASFAILURERATE )[DBO] [FUN_GETTIME](C ID)FROM TABLEFMECA TABLERELATION B TABLETASKPHASE CWHERE ROID=@ROID AND TASKPHASEID=C ID AND B ID=@ROIDSELECT @CA=SUM(ISNULL(Cvalue_M )) FROM TABLEFMECA WHERE ROID=@ROIDUPDATE TABLERELATIONSET CRITICALITY=@CAWHERE ID=@ROIDENDGO

◆ 我们要根据某表的某些记录 先计算后求和 因为无法存储中间值 平时我们也用游标的方法进行计算 但SQL Server 里支持

SUM ( [ ALL DISTINCT ] eXPression )expression

是常量 列或函数 或者是算术 按位与字符串等运算符的任意组合 因此我们可以利用这一功能

函数部分

lishixinzhi/Article/program/SQLServer/201311/22423

sqlserver中

EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理

1使用系统存储过程sp_executesql运行Unicode命令字符串

语法如下:

sp_executesql [@stmt=] stmt

[

{,[@params=] N'@parameter_name data_type [,n]'}

{,[@param1=] 'value' [,n]}

]

说明:必须先将各个包含所要运行的命令语句的Unicode字符串相加在一起,再交给系统存储过程sp_executesql来运行,而不能在sp_executesql的语句中来相加各个命令字符串。

举例如下:

declare @DBName nvarchar(20),

@Tbname nvarchar(20),

@SQLString nvarchar(500)

set @DBName=N'Northwind'

set @Tbname=N'Customers'

set @SQLString=N'USE '+@DBName+char(13) --char(13)换行

SET @SQLString=@SQLString+N'select from '+@Tbname

--必须先将命令字符串组合完毕后再交给sp_executesql来运行

exec sp_executesql @SQLString

2使用EXECUTE命令运行命令字符串

要使用EXECUTE命令来运行一个命令字符串的语法如下:

EXEC[UTE] ({@string_variable|[N] 'stql_string'} [+n])

从语法看出,可以先将包含所要运行的命令的字符串赋给一个局部变量@string_variable,再使用EXECUTE命令来运行,或是直接使用EXECUTE命令去运行一个包含所要运行的命令语句的字符串。此外,您也可以将多个包含所要运行的命令语句的字符串相加在一起,再交给EXECUTE命令来一次运行。

例:

declare @sql nvarchar(4000)

set @sql='select from [表] where email=''test@163com'''

exec (@sql)

如果没有返回值就是函数,如果有返回值,就是存储过程。存储过程是编译后存在数据库里面的。只能说是在command里面编译。

就是用begin end界定一个代码块,跟C语言中的{}是同一个意思。比如CREATE Procedure()

as

begin

。。。

/

if ()

begin  

end

else

begin  

end

/

end

而这里省略号位置如果又出现了While循环或者shuIF ELSE判断,当然就又需要界定范围了,你不能在里面用{},只能嵌套begin end。

扩展资料:

Oracle存储过程基础知识商业规则和业务逻辑bai可以通过程序存储在Oracle中,这个程序就是存储过程。 存储过程是SQL, PL/SQL, Java 语句的组合,它使你能将执行商业规则的代码从你的应用程序中移动到数据库。这样的结果就是,代码存储一次但是能够被多个程序使用。

oracle 的存储过程里没有declare的语法,触发器和plsql块才是declare

如果要定义变量,后面直接跟is的

CREATE OR REPLACE PROCEDURE c(xxx)

IS

para number;

BEGIN

end;

以上就是关于数据库中怎样声明变量全部的内容,包括:数据库中怎样声明变量、讲解SQL Server数据库中函数的使用方法、数据库的EXEC是什么意思,应该怎么用呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9313107.html

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

发表评论

登录后才能评论

评论列表(0条)

保存