当前位置:首页 » 存储配置 » 调用存储函数生成表

调用存储函数生成表

发布时间: 2022-07-12 19:01:41

sql 存储过程创建表的问题!

把创建语句拼成字符串 存储过程中用exec去执行创建

Ⅱ 报表中调用数据库存储过程怎么写sql

1)自定义函数中不能调用存储过程,如果调用了,函数可以顺利创建,但是调用函数会出错 2)自定义函数中不能创建表,删除表,插入表数据 解决办法: 可以先把存储过程返回的结果插入到临时表,然后在函数里调用临时表,或者运用内置函数

Ⅲ SQL在存储过程中调用函数怎么做

返回单个值的函数, 可以当变量用, 比如 select dbo.函数名(参数1, 参数2, ...) from ...where abc = dbo.函数名(参数1, 参数2...)

返回表的函数, 可以当数据表来使用, 比如 select * from dbo.函数名(参数1, 参数2, ...)
参考:
http://..com/link?url=IbJNmN7HwV3Udj7GjJTJfLnTzYCyn-1tHaPcGx4F5cI5n0bHZV-TqSWXyZs6r4HoTtdQAnSJfwrR3jSy_W9eAK

Ⅳ 在存储过程中建的临时表,怎么在存储过程中调用的函数里调用急

#table 用户临时表
##table 系统临时表
你用系统临时表就可以了

Ⅳ sql数据库中的自定义函数可以调用存储过程

1)自定义函数中不能调用存储过程,如果调用了,函数可以顺利创建,但是调用函数会出错

2)自定义函数中不能创建表,删除表,插入表数据
解决办法:

可以先把存储过程返回的结果插入到临时表,然后在函数里调用临时表,或者运用内置函数,或者使用复杂的联合查询实现想要的结果

java是如何调用带函数的存储过程的如果可以的话,用一个小例子讲解一下吧!

创建表:
CREATE TABLE [BookUser] (
[UserID] [int] IDENTITY (1, 1) NOT NULL ,
[UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Guid] [uniqueidentifier] NOT NULL CONSTRAINT [DF_BookUser_Guid] DEFAULT (newid()),
[BirthDate] [datetime] NOT NULL ,
[Description] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Photo] [image] NULL ,
[Other] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_BookUser_Other] DEFAULT ('默认值'), CONSTRAINT [PK_BookUser] PRIMARY KEY CLUSTERED ( [UserID] )
ON [PRIMARY] )
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GO
创建存储过程:
CREATE PROCEDURE InsertUser@UserName varchar(50),@Title varchar(255),@Guid uniqueidentifier,@BirthDate DateTime,@Description ntext,@Photo image,@Other nvarchar(50),@UserID int output AsSet NOCOUNT ONIf Exists (select UserID from BookUser Where UserName = @UserName)RETURN 0ELSEBeginINSERT INTO BookUser (UserName,Title,Guid,BirthDate,Description,Photo,Other) VALUES(@UserName,@Title,@Guid,@BirthDate,@Description,@Photo,@Other)SET @UserID = @@IDENTITYRETURN 1EndGO
JSP代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import = "java.sql.*"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><%//注意:下面的连接方法采用最新的SQL Server的JDBC,//请到 http://msdn2.microsoft.com/zh-cn/data/aa937724.aspx 下载Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://localhost:1433;databaseName=Book;user=sa;password="; String sql = "{? = call InsertUser(?,?,?,?,?,?,?,?)}"; Connection cn = null;CallableStatement cmd = null;try{ cn = DriverManager.getConnection(url); cmd = cn.prepareCall(sql); java.util.UUID Guid = java.util.UUID.randomUUID(); String FilePath = application.getRealPath("") + "\test\logo.gif"; java.io.FileInputStream f = new java.io.FileInputStream(FilePath); Date rightNow = Date.valueOf("2007-9-9"); cmd.setString("UserName","mengxianhui"); //注意修改这里,存储过程验证了UserName的唯一性。 cmd.setString("Title","孟宪会"); cmd.setString("Guid",Guid.toString()); cmd.setString("BirthDate","2007-9-9"); cmd.setDate("BirthDate",rightNow); cmd.setString("Description","【孟子E章】"); cmd.setBinaryStream("Photo",f,f.available()); cmd.setString("Other",null); cmd.registerOutParameter(1,java.sql.Types.INTEGER); cmd.registerOutParameter("UserID",java.sql.Types.INTEGER); cmd.execute(); int returnValue = cmd.getInt(1); int UserID = cmd.getInt("UserID"); if(returnValue == 1) { out.print("<li>添加成功!"); out.print("<li>UserID = " + UserID); out.print("<li>returnValue = " + returnValue); } else { out.print("<li>添加失败!"); } f.close();}catch(Exception ex){ out.print(ex.getLocalizedMessage());}finally{ try { if(cmd != null) { cmd.close(); cmd = null; } if(cn != null) { cn.close(); cn = null; } } catch(Exception e) { e.printStackTrace(); }}%></body></html>

Ⅶ mysql为四个表创建储存过程或者储存函数

“另一个存储过程”的名字是sp1,没有参数,返回的结果集共3列,全部为int型,那么“存储过程”里添加一个与结果集列数相同的临时表或表变量用于接收“另一个存储过程”的结果集
如下
CREATE PROCEDURE sp2
AS
DECLARE @t table(a int,b int,c int)

INSERT INTO @t(a,b,c)
EXEC sp1

SELECT * FROM @t
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用。
创建存储过程
和数据表一样,在使用之前需要创建存储过程,它的简明语法是:

引用:
Create PROC 存储过程名称
[参数列表(多个以“,”分隔)]
AS
SQL 语句

例:

引用:
Create PROC upGetUserName
@intUserId INT,
@ostrUserName NVARCHAR(20) OUTPUT -- 要输出的参数
AS
BEGIN
-- 将uName的值赋给 @ostrUserName 变量,即要输出的参数
Select @ostrUserName=uName FROM uUser Where uId=@intUserId
END

其中 Create PROC 语句(完整语句为Create PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和 @ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。只要将以上代码在“查询分析器”里执行一次,SQL SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择“存储过程”,此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可)。

Ⅷ 把存储过程查出的表当成一个虚拟表

不太明白你的意思
存储过程的话,在存储过程里面处理完在返回,没必要在调用完存储过程再处理得到的记录集。而且像你说的查出一个表就是一个记录集,可以在程序里面直接该记录集的某条记录某个字段的。要像你所说的把返回的当成一张虚拟表的话,应该用表值函数,如
CREATE FUNCTION returntable
(
@p1 int
)
RETURNS TABLE
AS
RETURN
(
SELECT @p1 as A
)

这样就可以 select A from returntable

热点内容
python表格抓取 发布:2024-10-08 13:30:31 浏览:717
编写定时下载ftp文件脚本 发布:2024-10-08 13:30:18 浏览:227
电脑上怎么看本机的配置 发布:2024-10-08 13:26:02 浏览:41
androidepub 发布:2024-10-08 13:25:22 浏览:549
怎么拿云服务器做进销存 发布:2024-10-08 13:25:14 浏览:724
小本解说服务器是什么 发布:2024-10-08 13:25:09 浏览:393
安卓倍速脚本 发布:2024-10-08 13:18:48 浏览:77
饥荒本地服务器后续怎么添加服务器模组 发布:2024-10-08 13:18:24 浏览:199
阿里云服务器centos7还是8 发布:2024-10-08 13:16:16 浏览:718
安卓手机的屏幕设置在哪里 发布:2024-10-08 13:14:37 浏览:702