当前位置:首页 » 编程语言 » sql执行函数

sql执行函数

发布时间: 2022-04-15 09:20:46

Ⅰ 执行动态sql语句的函数怎么写

执行动态SQL语句的函数怎么写
其实你这你都知道用函数实现不了的,因为你的输入参数@SQL是动态的,那必须用exec执行,而函数里不能用exec。建议你用存储过程实现,示例如下:

创建存储过程:
create procere TEST
(
@SQL NVARCHAR(200),
@RE INT output
)
AS
BEGIN
set nocount on
if exists (select * from tempdb.dbo.sysobjects where xtype='U' and id=object_id('#test'))
drop table #test

create table #test(total int)
insert into #test
exec (@SQL)
select @RE=isnull(total,0) from #test
set nocount off
END

调用示例:
declare @RE int
exec TEST 'select 1+1',@RE output
PRINT @RE

结果:
2

Ⅱ 怎么用sql语句执行用户自定义函数

createfunctionfn_test(@avarchar(10),----待验证字符
@bvarchar(10)---单个字符串集合列表
)
returnsvarchar(10)
as
begin
declare@cvarchar(100)
set@c=@a+@b
return@c

end

go


selectdbo.fn_test('test1','test2');
go

Ⅲ 函数内执行sql语句怎么写

php中利用数组用mysql_query批量执行sql语句。
参考示例如下:
思路:这里采用一个数组.用explode
函数,将$query语句按照”;”炸开,然后循环执行即可:
$query
=
'delete
from
ecs_goods_attr
where
attr_id=11
and
goods_id=22;
insert
into
ecs_goods_attr
(goods_attr_id,goods_id,attr_id,attr_value,attr_price)values(null,33,138,"胆略",0);
update
ecs_goods
set
goods_number=10,shop_price=55
where
goods_id=33;'
$query_e
=
explode(';','$query');
foreach
($query_e
as
$k
=>$v)
{
mysql_query($query_e[$k]);
}
这样
$query语句就被批量的执行了。

Ⅳ SQL的函数和过程正确的描述是

SQL允许定义函数、过程和方法。定义可通过SQL的有关过程的组件,也可以通过外部的程序设计语言,如Java,C或C++。SQL标准所定义的语法,与大多数数据库实现的自身的非标准版本的语法不同。函数和过程允许“业务逻辑”作为存储过程记录在数据库中,并在数据库中执行。

业务逻辑能够被写成程序设计语言过程并完全存储在数据库之外,但把它们定义成数据库中的存储过程有几个优点:

1 允许多个应用访问这些过程。

2.允许当业务规则发生改变时进行单个点的改变,而不变改变应用系统的其他部分。

3.应用代码可以调用存储过程,而不是直接更新数据库关系。

具体操作如下:

1. 声明方式。

在begin……end之间的语句可以执行signal out_of_classrome_seats来引发异常。这个句柄说明如果条件发生,将会采取动作终止begin end中的语句。另一个可选的动作是continue,它继续从引发异常的语句的下一条语句开始执行。

    Ⅳ 如何在SQL语句中使用FUNCTION

    1、function是SQL的函数
    是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。Microsoft® SQL Server™ 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。
    可使用 CREATE FUNCTION 语句创建、使用 ALTER FUNCTION 语句修改、以及使用 DROP FUNCTION 语句除去用户定义函数。每个完全合法的用户定义函数名 (database_name.owner_name.function_name) 必须唯一。
    必须被授予 CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。不是所有者的用户在 Transact-SQL 语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在 CHECK 约束、DEFAULT 子句或计算列定义中引用用户定义函数的表,还必须具有函数的 REFERENCES 权限。
    在函数中,区别处理导致删除语句并且继续在诸如触发器或存储过程等模式中的下一语句的 Transact-SQL 错误。在函数中,上述错误会导致停止执行函数。接下来该操作导致停止唤醒调用该函数的语句。
    用户定义函数的类型
    2、Procere是SQL的存储过程
    存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
    存储过程是利用SQL Server所提供的Transact-SQL语言所编写的程序。Transact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的PL-SQL和 Informix的数据库系统结构中的Informix- 4GL语言。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:
    1)、变量说明
    2)、ANSI兼容的SQL命令(如Select,Update….)
    3)、一般流程控制命令(if…else…、while….)
    4)、内部函数

    Ⅵ 常用的sql函数

    --数据操作
    2
    3 SELECT --从数据库表中检索数据行和列
    4 INSERT --向数据库表添加新数据行
    5 DELETE --从数据库表中删除数据行
    6 UPDATE --更新数据库表中的数据
    7
    8 --数据定义
    9
    10 CREATE TABLE --创建一个数据库表
    11 DROP TABLE --从数据库中删除表
    12 ALTER TABLE --修改数据库表结构
    13 CREATE VIEW --创建一个视图
    14 DROP VIEW --从数据库中删除视图
    15 CREATE INDEX --为数据库表创建一个索引
    16 DROP INDEX --从数据库中删除索引
    17 CREATE PROCEDURE --创建一个存储过程
    18 DROP PROCEDURE --从数据库中删除存储过程
    19 CREATE TRIGGER --创建一个触发器
    20 DROP TRIGGER --从数据库中删除触发器
    21 CREATE SCHEMA --向数据库添加一个新模式
    22 DROP SCHEMA --从数据库中删除一个模式
    23 CREATE DOMAIN --创建一个数据值域
    24 ALTER DOMAIN --改变域定义
    25 DROP DOMAIN --从数据库中删除一个域
    26
    27 --数据控制
    28
    29 GRANT --授予用户访问权限
    30 DENY --拒绝用户访问
    31 REVOKE --解除用户访问权限
    32
    33 --事务控制
    34
    35 COMMIT --结束当前事务
    36 ROLLBACK --中止当前事务
    37 SET TRANSACTION --定义当前事务数据访问特征
    38
    39 --程序化SQL
    40
    41 DECLARE --为查询设定游标
    42 EXPLAN --为查询描述数据访问计划
    43 OPEN --检索查询结果打开一个游标
    44 FETCH --检索一行查询结果
    45 CLOSE --关闭游标
    46 PREPARE --为动态执行准备SQL 语句
    47 EXECUTE --动态地执行SQL 语句
    48 DESCRIBE --描述准备好的查询
    49
    50 ---局部变量
    51 declare @id varchar(10)
    52 --set @id = 'sp'
    53 select @id = 'sp'
    54
    55 ---全局变量
    56 ---必须以@@开头
    57 --IF ELSE
    58 declare @x int @y int @z int
    59 select @x = 1 @y = 2 @z=3
    60 if @x > @y
    61 print 'x > y' --打印字符串'x > y'
    62 else if @y > @z
    63 print 'y > z'
    64 else print 'z > y'
    65 --CASE
    66 use pubs
    67 update employee
    68 set e_wage =
    69 case
    70 when job_level = ’1’ then e_wage*1.08
    71 when job_level = ’2’ then e_wage*1.07
    72 when job_level = ’3’ then e_wage*1.06
    73 else e_wage*1.05
    74 end
    75 --WHILE CONTINUE BREAK
    76 declare @x int @y int @c int
    77 select @x = 1 @y=1
    78 while @x < 3
    79 begin
    80 print @x --打印变量x 的值
    81 while @y < 3
    82 begin
    83 select @c = 100*@x + @y
    84 print @c --打印变量c 的值
    85 select @y = @y + 1
    86 end
    87 select @x = @x + 1
    88 select @y = 1
    89 end
    90 --WAITFOR
    91
    92 --例 等待1 小时2 分零3 秒后才执行SELECT 语句
    93
    94 waitfor delay ’01:02:03’
    95 select * from employee
    96
    97 --例 等到晚上11 点零8 分后才执行SELECT 语句
    98
    99 waitfor time ’23:08:00’
    100
    101
    102SELECT
    103
    104 select *(列名) from table_name(表名) where column_name operator value ex宿主)
    105 select * from stock_information where stockid = str(nid)
    106 stockname = 'str_name'
    107 stockname like '% find that %'
    108 stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
    109 stockname like '[^F-M]%' --------- (^排除指定范围)
    110 --------- 只能在使用like关键字的where子句中使用通配符)
    111 or stockpath = 'path'
    112 or stocknumber < 1000
    113 and stockindex = 24
    114 not stocksex = 'man'
    115 stocknumber between 20 and 100
    116 stocknumber in(10,20,30)
    117 order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
    118 order by 1,2 --------- by列号
    119 stockname = (select stockname from stock_information where stockid = 4)
    120 --------- 子查询
    121 --------- 除非能确保内层select只返回一个行的值
    122 --------- 否则应在外层where子句中用一个in限定符
    123 select distinct column_name form table_name
    124 --------- distinct指定检索独有的列值,不重复
    125 select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
    126 select stockname , "stocknumber" = count(*) from table_name group by stockname
    127 --------- group by 将表按行分组,指定列中有相同的值
    128 having count(*) = 2 --------- having选定指定的组
    129
    130 select *
    131 from table1, table2
    132where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
    133 table1.id =* table2.id -------- 右外部连接
    134 select stockname from table1
    135 union [all] -------- union合并查询结果集,all-保留重复行
    136 select stockname from table2
    137
    138 insert
    139
    140 insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx"
    141 value (select Stockname , Stocknumber from Stock_table2)
    142 -------value为select语句
    143
    144 update
    145
    146 update table_name set Stockname = "xxx" [where Stockid = 3]
    147 Stockname = default
    148 Stockname = null
    149 Stocknumber = Stockname + 4
    150
    151 delete
    152
    153 delete from table_name where Stockid = 3
    154 truncate table 表名 --------- 删除表中所有行,仍保持表的完整性
    155 drop table table_name --------- 完全删除表
    156
    157 alter table -------- 修改数据库表结构
    158
    159 alter table database.owner.table_name add column_name char(2) null ..
    160 sp_help 表名 -------- 显示表已有特征
    161 create table table_name (name char(20), age smallint, lname varchar(30))
    162 insert into table_name select -------- 实现删除列的方法(创建新表)
    163 alter table table_name drop constraint Stockname_default
    164 --------- 删除Stockname的default约束
    165
    166
    167常用函数(function)
    168转换函数
    169convert(数据类型,值,格式)
    170
    171 统计函数
    172
    173 AVG --求平均值
    174 COUNT --统计数目
    175 MAX --求最大值
    176 MIN --求最小值
    177 SUM --求和
    178 STDEV()
    179
    180 --STDEV()函数返回表达式中所有数据的标准差
    181 --STDEVP()
    182 --STDEVP()函数返回总体标准差
    183
    184 VAR()
    185
    186 --VAR()函数返回表达式中所有值的统计变异数
    187
    188 VARP()
    189
    190 --VARP()函数返回总体变异数
    191
    192 算术函数
    193
    194 三角函数
    195
    196 SIN(float_expression) --返回以弧度表示的角的正弦
    197 COS(float_expression) --返回以弧度表示的角的余弦
    198 TAN(float_expression) --返回以弧度表示的角的正切
    199 COT(float_expression) --返回以弧度表示的角的余切
    200
    201 反三角函数
    202
    203 ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
    204 ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
    205 ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
    206 ATAN2(float_expression1,float_expression2)
    207 ------返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
    208 DEGREES(numeric_expression)
    209 ------把弧度转换为角度返回与表达式相同的数据类型可为
    210 ------INTEGER/MONEY/REAL/FLOAT 类型
    211 RADIANS(numeric_expression)
    212------把角度转换为弧度返回与表达式相同的数据类型可为
    213
    214 ------INTEGER/MONEY/REAL/FLOAT 类型
    215 EXP(float_expression) --返回表达式的指数值
    216 LOG(float_expression) --返回表达式的自然对数值
    217 LOG10(float_expression)--返回表达式的以10 为底的对数值
    218 SQRT(float_expression) --返回表达式的平方根
    219
    220 取近似值函数
    221
    222 CEILING(numeric_expression)
    223-------返回>=表达式的最大整数返回的数据类型与表达式相同可为
    224 -------INTEGER/MONEY/REAL/FLOAT 类型
    225 FLOOR(numeric_expression)
    226-------返回<=表达式的最小整数返回的数据类型与表达式相同可为
    227 -------INTEGER/MONEY/REAL/FLOAT 类型
    228 ROUND(numeric_expression)
    229-------返回以integer_expression 为精度的四舍五入值返回的数据
    230 -------类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
    231 ABS(numeric_expression)
    232-------返回表达式的绝对值返回的数据类型与表达式相同可为
    233 -------INTEGER/MONEY/REAL/FLOAT 类型
    234 SIGN(numeric_expression)
    235-------测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
    236 -------与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
    237 PI() -------返回值为π 即3.1415926535897936
    238 RAND([integer_expression])
    239-------用任选的[integer_expression]做种子值得出0-1 间的随机浮点数
    240字符串函数
    241
    242 ASCII() ------函数返回字符表达式最左端字符的ASCII 码值
    243 CHAR() ------函数用于将ASCII 码转换为字符
    244 ------如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
    245 LOWER() ------函数把字符串全部转换为小写
    246 UPPER() ------函数把字符串全部转换为大写
    247 STR() ------函数把数值型数据转换为字符型数据
    248 LTRIM() ------函数把字符串头部的空格去掉
    249 RTRIM() ------函数把字符串尾部的空格去掉
    250 LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串
    251 CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置
    252 SOUNDEX() ------函数返回一个四位字符码
    253 ------SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值
    254 DIFFERENCE() ------函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
    255 ------0 两个SOUNDEX 函数返回值的第一个字符不同
    256 ------1 两个SOUNDEX 函数返回值的第一个字符相同
    257 ------2 两个SOUNDEX 函数返回值的第一二个字符相同
    258 ------3 两个SOUNDEX 函数返回值的第一二三个字符相同
    259 ------4 两个SOUNDEX 函数返回值完全相同同
    260 QUOTENAME() ------函数返回被特定字符括起来的字符串
    261
    262 /**//**//**//*select quotename('abc', '{') quotename('abc')
    263 运行结果如下
    264
    265 {
    266 {abc} [abc]*/
    267 REPLICATE() ------函数返回一个重复character_expression 指定次数的字符串
    268 /**//**//**//*select replicate('abc', 3) replicate( 'abc', -2)
    269
    270 运行结果如下
    271
    272 abcabcabc NULL*/
    273 REVERSE() ------函数将指定的字符串的字符排列顺序颠倒
    274 REPLACE() ------函数返回被替换了指定子串的字符串
    275 /**//**//**//*select replace('abc123g', '123', 'def')
    276
    277 运行结果如下
    278
    279 abcdefg*/
    280
    281 SPACE() ------函数返回一个有指定长度的空白字符串
    282 STUFF() ------函数用另一子串替换字符串指定位置长度的子串
    283
    284 数据类型转换函数
    285
    286 CAST() 函数语法如下
    287 CAST() ( AS [ length ])
    288 CONVERT() 函数语法如下
    289 CONVERT() ([ length ], [, style])
    290 select cast(100+99 as char) convert(varchar(12), getdate())
    291
    292 运行结果如下
    293 199 Jan 15 2000
    294
    295 日期函数
    296
    297 DAY() ------函数返回date_expression 中的日期值
    298 MONTH() ------函数返回date_expression 中的月份值
    299 YEAR() ------函数返回date_expression 中的年份值
    300 DATEADD( , ,)
    301 -----函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
    302 DATEDIFF( , ,)
    303 -----函数返回两个指定日期在datepart 方面的不同之处
    304
    305 DATENAME( , ------函数以字符串的形式返回日期的指定部分
    306 DATEPART( , ------函数以整数值的形式返回日期的指定部分
    307 GETDATE() ------函数以DATETIME 的缺省格式返回系统当前的日期和时间
    308
    309 系统函数
    310
    311 APP_NAME() ------函数返回当前执行的应用程序的名称
    312 COALESCE() -----函数返回众多表达式中第一个非NULL 表达式的值
    313 COL_LENGTH(<'table_name'>, <'column_name'> ----函数返回表中指定字段的长度值
    314 COL_NAME(, ----函数返回表中指定字段的名称即列名
    315 DATALENGTH() -----函数返回数据表达式的数据的实际长度
    316 DB_ID(['database_name']) ------函数返回数据库的编号
    317 DB_NAME(database_id) ------函数返回数据库的名称
    318 HOST_ID() -----函数返回服务器端计算机的名称
    319 HOST_NAME() -----函数返回服务器端计算机的名称
    320 IDENTITY([, seed increment]) [AS column_name])
    321 --IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
    322 /**//**//**//*select identity(int, 1, 1) as column_name
    323 into newtable
    324 from oldtable*/
    325
    326 ISDATE() ----函数判断所给定的表达式是否为合理日期
    327 ISNULL(, --函数将表达式中的NULL 值用指定值替换
    328 ISNUMERIC() ----函数判断所给定的表达式是否为合理的数值
    329 NEWID() ----函数返回一个UNIQUEIDENTIFIER 类型的数值
    330 NULLIF(,
    331 ----NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回xpression1 的值

    Ⅶ SQL如何在表中调用函数

    SELECT dbo.f_split(a) a,dbo.f_split(b) b from table

    Ⅷ 在SQL中怎样调用自定义函数

    在select后跟你的自定义函数就可以。

    mysql中用select调用自带的now()函数:
    mysql> select now();
    然后mysql就会返回当前的时间。

    Ⅸ SQL中如何调用一个函数啊

    1、首先是找到标量函数,右键单击选择新建。

    Ⅹ sql 函数怎么运行

    额 第一 你的@要和hostname 挨在一起
    第二 调用函数 要加 dbo. 如 dbo.host_name

    热点内容
    华山算法 发布:2025-01-21 08:44:48 浏览:366
    如何在微信上再设置一个密码 发布:2025-01-21 08:44:39 浏览:731
    浙江服务器搭建云主机 发布:2025-01-21 08:41:38 浏览:452
    光遇和王者荣耀哪个需要的配置高 发布:2025-01-21 08:40:28 浏览:13
    如何取消安卓微信表情 发布:2025-01-21 08:08:39 浏览:556
    python判断是否为字母 发布:2025-01-21 08:07:55 浏览:609
    安卓手机如何注销吃鸡账号并把钱拿回来 发布:2025-01-21 07:56:14 浏览:887
    电信的密码是什么意思 发布:2025-01-21 07:30:36 浏览:717
    在自己电脑搭建服务器 发布:2025-01-21 07:27:13 浏览:654
    怎么配置钉钉代理网络 发布:2025-01-21 07:17:16 浏览:711