runstoredprocedure

Вызовите хранимую процедуру с и без аргументов ввода и вывода

Это вызовы функции хранимая процедура, которая не имеет никаких входных параметров, никаких выходных аргументов или любой комбинации аргументов ввода и вывода. Задайте и инстанцируйте этой хранимой процедуры в своей базе данных.

Можно использовать эту функцию, если вы соединяетесь со своей базой данных с помощью драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Если вы используете нативный интерфейс ODBC, чтобы соединиться с вашей базой данных, используйте exec, чтобы вызвать хранимую процедуру.

Синтаксис

results = runstoredprocedure(conn,spname)
results = runstoredprocedure(conn,spname,inputargs)
results = runstoredprocedure(conn,spname,inputargs,outputtypes)

Описание

пример

results = runstoredprocedure(conn,spname) вызывает хранимую процедуру spname с помощью соединения с базой данных conn. results является логический 1, если хранимая процедура возвращает набор данных. В противном случае results является логический 0.

пример

results = runstoredprocedure(conn,spname,inputargs) вызывает хранимую процедуру, которая принимает один или несколько входных параметров inputargs.

пример

results = runstoredprocedure(conn,spname,inputargs,outputtypes) вызывает хранимую процедуру, которая возвращает выходные аргументы путем определения типов данных выходного аргумента outputtypes. results является массивом ячеек, который содержит один или несколько выходных аргументов.

Примеры

свернуть все

Задайте хранимую процедуру под названием create_table, который составляет таблицу под названием test_table путем выполнения этого кода. Эта процедура не имеет никаких аргументов ввода или вывода. Этот код принимает, что вы используете базу данных Microsoft® SQL Server®.

CREATE PROCEDURE create_table 
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

CREATE TABLE test_table
	 (
		CATEGORY_ID     INTEGER     IDENTITY PRIMARY KEY,
		CATEGORY_DESC   CHAR(50)    NOT NULL
        );
	
END
GO

Создайте соединение с базой данных Microsoft SQL Server conn с помощью драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите хранимую процедуру create_table с помощью соединения с базой данных conn.

results = runstoredprocedure(conn,'create_table')
results = 

   0

results возвращается 0, потому что вызов create_table не возвращает набор данных.

Проверяйте свою базу данных на новую таблицу под названием test_table.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием insert_data, который вставляет описание категории в таблицу под названием test_create путем выполнения этого кода. Эта процедура имеет один входной параметр data. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE insert_data 
	@data varchar(50)

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	INSERT INTO test_create (CATEGORY_DESC) 
	VALUES (@data)
END
GO

Создайте соединение с базой данных Microsoft SQL Server conn с помощью драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите хранимую процедуру insert_data с помощью соединения с базой данных conn с описанием категории Apples как входной параметр.

inputarg = {'Apples'};

results = runstoredprocedure(conn,'insert_data',inputarg)
results =

   0

results возвращается 0, потому что вызов insert_data не возвращает набор данных.

Таблица test_create добавляет строку, где столбец, CATEGORY_ID равняется 1 и столбцу CATEGORY_DESCRIPTION, равняется Apples.

CATEGORY_ID является первичным ключом таблицы test_create. Этот первичный ключ постепенно увеличивается автоматически. CATEGORY_ID равняется 1 при вызове insert_data впервые.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием maxDecVolume, который выбирает максимальный объем продаж в декабре путем выполнения этого кода. Эта процедура имеет один выходной аргумент data и никакие входные параметры. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE maxDecVolume
	@data int OUTPUT 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

 	SELECT @data = max(December) FROM salesVolume
END

GO

Создайте соединение с базой данных Microsoft SQL Server conn с помощью драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите использование хранимой процедуры:

  • Соединение с базой данных conn

  • Хранимая процедура maxDecVolume

  • Пустые скобки, чтобы не обозначить входные параметры

  • Числовой тип данных Java® outputtype

outputtype = {java.sql.Types.NUMERIC};

results = runstoredprocedure(conn,'maxDecVolume',[],outputtype)
results = 

    [1x1 java.math.BigDecimal]

results возвращает массив ячеек, который содержит максимальный объем продаж как тип данных decimal Java.

Отобразите значение в results.

results{1}
ans =
 
35000 

Максимальный объем продаж в декабре 35,000.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием getSuppCount, который считает количество поставщиков для заданного города путем выполнения этого кода. Эта процедура имеет один входной параметр cityName и один выходной аргумент suppCount. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE getSuppCount 
	(@cityName varchar(20),
	 @suppCount int OUTPUT)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
	SELECT @suppCount = count(supplierNumber)
 FROM suppliers WHERE City = @cityName;
	
END
GO

Создайте соединение с базой данных Microsoft SQL Server conn с помощью драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите хранимую процедуру getSuppCount с помощью соединения с базой данных conn. Входной параметр inputarg является массивом ячеек, содержащим вектор символов 'New York'. Тип данных вывода Java outputtype является числовым.

inputarg = {'New York'};
outputtype = {java.sql.Types.NUMERIC};

results = runstoredprocedure(conn,'getSuppCount',inputarg,outputtype)
results = 

    [1x1 java.math.BigDecimal]

results является массивом ячеек, который содержит количество поставщика как тип данных decimal Java.

Отобразите значение в results.

results{1}
ans =
 
6.0000

В Нью-Йорке существует шесть поставщиков.

Закройте соединение с базой данных conn.

close(conn)

Задайте хранимую процедуру под названием productsWithinUnitCost, который возвращает номер продуктов и описание для продуктов, которые имеют себестоимость единицы продукции в заданной области значений путем выполнения этого кода. Эта процедура имеет два входных параметра minUnitCost и maxUnitCost. Эта процедура имеет два выходных аргумента productno и productdesc. Этот код принимает, что вы используете базу данных Microsoft SQL Server.

CREATE PROCEDURE productsWithinUnitCost
	(@minUnitCost INT, 
	@maxUnitCost INT,
	@productno INT OUTPUT, 
	@productdesc VARCHAR(50) OUTPUT)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

 SELECT @productno = productNumber, @productdesc = productDescription
 FROM productTable
	WHERE unitCost > @minUnitCost AND unitCost < @maxUnitCost
END


GO

Создайте соединение с базой данных Microsoft SQL Server conn с помощью драйвера JDBC. Для получения дополнительной информации смотрите Соединение с Базой данных. Затем вызовите использование хранимой процедуры:

  • Соединение с базой данных conn

  • Хранимая процедура productsWithinUnitCost

  • Входные параметры inputargs, чтобы задать себестоимость единицы продукции между 19 и 21

  • Выходные Java типы данных outputtypes, чтобы задать типы числовых данных и типы данных String для номера продуктов и описания

inputargs = {19,21};
outputtypes = {java.sql.Types.NUMERIC,java.sql.Types.VARCHAR};

results = runstoredprocedure(conn,'productsWithinUnitCost',...
                             inputargs,outputtypes)
results = 

    [1x1 java.math.BigDecimal]
    'Snacks'                  

results возвращает массив ячеек, который содержит номер продуктов как тип данных decimal Java и описание продукта как строка.

Отобразите номер продуктов в results.

results{1}
ans =
 
15

Продукт с номером продуктов 15 имеет себестоимость единицы продукции между 19 и 21.

Отобразите описание продукта в results.

results{2}
ans =

Snacks

Продукт с номером продуктов 15 имеет описание продукта Snacks.

Здесь, узкая область значений себестоимости единицы продукции возвращает только один продукт. Если область значений себестоимости единицы продукции более широка, то больше чем один продукт может удовлетворить это условие. Чтобы возвратить набор данных с многочисленными продуктами, используйте exec и fetch, чтобы вызвать эту хранимую процедуру. В противном случае runstoredprocedure возвращает только последнюю строку в наборе данных.

Закройте соединение с базой данных conn.

close(conn)

Входные параметры

свернуть все

Соединение с базой данных, заданное как объект connection, создается с функцией database.

Имя хранимой процедуры, заданное как вектор символов, который содержит имя хранимой процедуры, которую задают и инстанцируют в вашей базе данных.

Типы данных: char

Входные параметры, заданные как массив ячеек одного или нескольких значений для каждого входного параметра хранимой процедуры. Входные параметры могут быть только типами основных данных такой как дважды, вектор символов, логический, и так далее.

Типы данных: cell

Выведите типы, заданные как массив ячеек одного или нескольких типов данных Java для выходных аргументов хранимой процедуры. Некоторые драйверы JDBC не поддерживают весь java.sql.Types. Консультируйтесь со своей документацией драйвера JDBC, чтобы найти поддерживаемые типы. Совпадайте с ними к типам данных, найденным в вашей хранимой процедуре.

Пример: {java.sql.Types.NUMERIC}

Типы данных: cell

Выходные аргументы

свернуть все

Результаты хранимой процедуры, возвращенные как логический массив или массив ячеек.

runstoredprocedure возвращает логический 1, когда вызов хранимой процедуры возвращает набор данных. В противном случае runstoredprocedure возвращает логический 0. Если хранимая процедура возвращает набор данных, используйте exec и fetch, чтобы вызвать хранимую процедуру и получить набор данных. Для получения дополнительной информации см. Хранимую процедуру Вызова, Которая Возвращает Данные.

runstoredprocedure возвращает массив ячеек, когда вы задаете один или несколько типов данных вывода Java для выходных аргументов хранимой процедуры. Используйте индексацию массива ячеек, чтобы получить значения выходного аргумента.

Представленный в R2006b