當前位置:首頁 » 存儲配置 » 調用存儲函數生成表

調用存儲函數生成表

發布時間: 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

熱點內容
2013年二級c語言真題 發布:2024-10-08 10:44:47 瀏覽:242
linux的locale 發布:2024-10-08 10:44:36 瀏覽:91
2rsa演算法 發布:2024-10-08 10:29:53 瀏覽:542
南京社保密碼多少 發布:2024-10-08 10:21:01 瀏覽:472
國內的少兒編程 發布:2024-10-08 10:21:00 瀏覽:520
vscode編譯調試閃退 發布:2024-10-08 10:19:27 瀏覽:671
oracle資料庫用戶許可權 發布:2024-10-08 09:46:00 瀏覽:708
立方的演算法口訣 發布:2024-10-08 09:44:30 瀏覽:820
python輸入到excel表格 發布:2024-10-08 09:36:31 瀏覽:285
腳本拒絕訪問閃退 發布:2024-10-08 09:34:55 瀏覽:939