当前位置:首页 » 编程语言 » sqlserverexecsql

sqlserverexecsql

发布时间: 2022-06-06 19:03:04

sql server 中EXEC的用法

字段名和表名在EXEC里面必须是确定的

你可以换一种形式比如:
select @temp=left_code from item_code where filter_name=@filter_name

⑵ SQL SERVER 2008 关于用EXEC执行存储过程的问题

不带 exec的执行存储过程必须是事务的第一句
我举个例子你就明白了

比如说我建立了一个存储过程 procName

第一种情况:不用exec的
create table ()..
GO --注意这里的GO 表示要开始下一个事务了
procName --这里直接使用存储过程名字 就是调用了

第二种情况:一定要使用 exec的
create table()
exec procName --你看这里,它不是作为这个事务的第一句开始的 所以要带上exec

⑶ sql server 如获得exec()执行语句的返回值

其实要分两种,一种是成功执行,另一种是执行失败抛出错误
建议使用sqlserver2005以后(看你用了max应该是2005以后的版本)新增的结构体begin try...end try...begin catch...end catch来捕获

ps.题外话,要保存中文,最好使用nvarchar,虽然存储空间增大了一倍,但是会避免有些情况下的乱码问题

⑷ sql server 2005如何使用exec命令

desc是查询表结构的命令、
exec是执行过程的命令、
两个不一样
exec 后面跟的是过程名、跟表名当然会报错

⑸ sql server中exec(赋给sql语句的变量)如何用变量保存值

好象有点明白了。假设你的存储过程有一个输入一个输出参数,并已经建立了这个存储过程,那你只要宣布两个变量分别为输入和输出 (比如如下语句):
DECLARE @para_inINT,@para_out VARCHAR(100);
DECLARE @sqlcmd varchar(500);
SET @para_in=2;
EXEC [你的存储过程] @para_in, @para_out;
PRINT @para_out;
你可以看到你的输出结果被打印出来。你还可以将@para_out拼到@sqlcmd中,然后执行;或做为另一存储过程的输入参数。
SET @sqlcmd = 'PRINT ''This isoutput parameter -' + @para_out + '''';
EXEC (@sqlcmd);或EXEC [另一存储过程] @para_out;
旦愿这回答了你的问题 :-)

⑹ sql server 中的EXEC有什么用!

exec函数族的作用为根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。

exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只留下进程ID等一些表面上的信息仍保持原样,看上去还是旧的躯壳,却已经注入了新的灵魂。只有调用失败了,它们才会返回一个-1,从原程序的调用点接着往下执行。



(6)sqlserverexecsql扩展阅读

使用exec函数族主要有两种情况:

1、当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用exec函数族中的任意一个函数让自己重生。

2、如果一个进程想执行另一个程序,那么它就可以调用fork函数新建一个进程,然后调用exec函数族中的任意一个函数,这样看起来就像通过执行应用程序而产生了一个新进程(这种情况非常普遍)。

⑺ sqlserver中如何在用户定义的函数里使用exec

这里我举个例子,假如有一个函数dbo.NumAdd用来计算加法,那它可能是这样的:
DROP FUNCTION dbo.NumAdd
GO
CREATE FUNCTION dbo.NumAdd
( @A SMALLINT,
@B SMALLINT
)
RETURNS INT
AS
BEGIN
DECLARE @Ret INT
SET @Ret = ISNULL(@A,0) + ISNULL(@B,0)
RETURN @Ret
END

你可以使用这样的方式调用函数并得到返回值:
DECLARE @M INT
SET @M = dbo.NumAdd(500,700)
select @M

现在,把这个函数修改成第一种使用存储过程的方式:
DROP Procere dbo.NumAdd1
GO
CREATE Procere dbo.NumAdd1
( @A SMALLINT,
@B SMALLINT,
@Ret INT OUTPUT
)
AS
BEGIN
SET @Ret = ISNULL(@A,0) + ISNULL(@B,0)
END
GO

那么,你就可以通过下列的方法调用这个实际和函数dbo.NumAdd功能相同的存储过程:
DECLARE @M1 INT
EXEC dbo.NumAdd1 500,600,@M1 OUTPUT
SELECT @M1

这种方法是对标量函数较好的处理方法,而且,一个存储过程可以使用一个或者多个带有OUTPUT的参数来返回值。

再看第二种方法修改为存储过程的方式:
DROP Procere dbo.NumAdd2
GO
CREATE Procere dbo.NumAdd2
( @A SMALLINT,
@B SMALLINT
)
AS
BEGIN
DECLARE @Ret INT
SET @Ret = ISNULL(@A,0) + ISNULL(@B,0)
SELECT @Ret
END
GO

这样,你就可以使用下面的方法来调用:

DECLARE @M2 INT
CREATE TABLE #Temp (Result INT)
INSERT #Temp EXEC dbo.NumAdd2 800,600
SELECT TOP 1 @M2 = Result FROM #Temp
DROP TABLE #Temp
SELECT @M2

列出的这两种方法都是把函数改成存储过程的方法,而且在存储过程中可以使用EXEC、PRINT等函数中不能使用的内容。

这个解释你明白了吗?

热点内容
担保中介源码 发布:2025-02-08 17:14:37 浏览:411
手机存储卡速度测试 发布:2025-02-08 17:02:57 浏览:25
洪恩编程 发布:2025-02-08 17:02:19 浏览:814
linux远程控制 发布:2025-02-08 17:02:16 浏览:153
珠心算算法 发布:2025-02-08 17:00:37 浏览:919
动态ip可以做服务器么 发布:2025-02-08 17:00:33 浏览:220
oracle定义存储过程 发布:2025-02-08 16:54:35 浏览:151
mac玩饥荒要什么配置 发布:2025-02-08 16:52:18 浏览:682
androidattributeset 发布:2025-02-08 16:51:23 浏览:424
c语言调用函数返回值 发布:2025-02-08 16:51:19 浏览:791