--Ejemplos de uso:
--exec mer_listarComentariosCampos
--exec mer_listarComentariosTablas
--exec mer_ActualizarDescripcionCampo 'TABLA', 'CAMPO', 'DESCRIPCION'
--exec mer_ActualizarDescripcionTabla 'TABLA', 'DESCRIPCION'
--exec mer_EliminarDescripcionTabla 'TABLA'
--exec mer_EliminarDescripcionCampo 'TABLA', 'CAMPO'
USE [BASE]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mer_ListarComentariosCampos]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[mer_ListarComentariosCampos]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mer_ListarComentariosTablas]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[mer_ListarComentariosTablas]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mer_ActualizarDescripcionTabla]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[mer_ActualizarDescripcionTabla]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mer_ActualizarDescripcionCampo]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[mer_ActualizarDescripcionCampo]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mer_EliminarDescripcionTabla]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[mer_EliminarDescripcionTabla]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mer_EliminarDescripcionCampo]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[mer_EliminarDescripcionCampo]
GO
CREATE PROCEDURE [dbo].[mer_ListarComentariosCampos]
AS
DECLARE @comentarios TABLE (
esquema sysname,
tabla sysname,
columna sysname,
descripcion VARCHAR(500))
DECLARE c CURSOR FOR
SELECT table_schema, table_name
FROM information_schema.tables
DECLARE @s sysname, @t sysname
OPEN c
FETCH c INTO @s, @t
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO @comentarios (esquema, tabla, columna, descripcion)
SELECT @s, @t, objname, convert(varchar(500), value)
FROM fn_listextendedproperty (N'MS_Description', N'schema', @s, N'table', @t, N'column', null);
FETCH c INTO @s, @t
END
CLOSE c
DEALLOCATE c
INSERT INTO @comentarios (esquema, tabla, columna)
SELECT table_schema, table_name, column_name
FROM information_schema.columns s
WHERE NOT EXISTS
(SELECT *
FROM @comentarios c
WHERE s.table_schema = c.esquema
AND s.table_name = c.tabla
AND s.column_name = c.columna)
SELECT *
FROM @comentarios
ORDER BY esquema, tabla, columna
GO
-------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[mer_ListarComentariosTablas]
AS
DECLARE @comentarios TABLE(tabla sysname, descripcion VARCHAR(500))
INSERT INTO @comentarios (tabla, descripcion)
SELECT objname, CONVERT(VARCHAR(500), value)
FROM ::FN_LISTEXTENDEDPROPERTY(N'MS_DESCRIPTION', N'USER', N'DBO', N'TABLE', NULL, NULL, NULL)
INSERT INTO @comentarios (tabla)
SELECT table_name
FROM information_schema.tables
WHERE table_name NOT IN
(select tabla FROM @comentarios)
SELECT * from @comentarios ORDER BY tabla
GO
-------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[mer_ActualizarDescripcionTabla]
-- Los parámetros son el nombre de la tabla y la descripción
@nombre_tabla sysname = '',
@descripcion_tabla sql_variant = ''
AS
BEGIN
BEGIN TRY
IF EXISTS (SELECT OBJNAME AS 'tabla', VALUE AS 'COMENTARIO'
FROM ::FN_LISTEXTENDEDPROPERTY(N'MS_DESCRIPTION', N'USER', N'DBO', N'TABLE',
@nombre_tabla, NULL, NULL) XP
WHERE XP.NAME IN (N'MS_DESCRIPTION'))
EXEC sys.sp_updateextendedproperty
@name=N'MS_Description',
@value=@descripcion_tabla,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla
ELSE
EXEC sys.sp_addextendedproperty
@name=N'MS_Description',
@value=@descripcion_tabla,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + convert(nvarchar(128),@descripcion_tabla) + '''a la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
END
GO
-------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[mer_ActualizarDescripcionCampo]
-- Los parámetros son el nombre de la tabla, el nombre de la columna y la descripción
@nombre_tabla sysname = '',
@nombre_campo sysname = '',
@descripcion_campo sql_variant = ''
AS
BEGIN TRY
IF EXISTS(SELECT objname, value
FROM fn_listextendedproperty (N'MS_Description', N'schema', 'dbo',
N'table', @nombre_tabla, N'column', null) WHERE objname = @nombre_campo)
EXEC sys.sp_updateextendedproperty
@name=N'MS_Description',
@value=@descripcion_campo,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla,
@level2type=N'COLUMN',
@level2name=@nombre_campo
ELSE
EXEC sys.sp_addextendedproperty
@name=N'MS_Description',
@value=@descripcion_campo,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla,
@level2type=N'COLUMN',
@level2name=@nombre_campo
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + convert(nvarchar(128),@descripcion_campo) + '''al campo ' + convert(nvarchar(128),@nombre_campo) + ' en la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
GO
-------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[mer_EliminarDescripcionTabla]
@nombre_tabla sysname = ''
AS
BEGIN TRY
EXEC sys.sp_dropextendedproperty
@name=N'MS_Description',
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + '''al campo ' + ' en la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
GO
-------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[mer_EliminarDescripcionCampo]
@nombre_tabla sysname = '',
@nombre_campo sysname = ''
AS
BEGIN TRY
EXEC sys.sp_dropextendedproperty
@name=N'MS_Description',
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla,
@level2type=N'COLUMN',
@level2name=@nombre_campo
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + '''al campo ' + convert(nvarchar(128),@nombre_campo) + ' en la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
GO
-------------------------------------------------------------------------------------------------------------
Ejecutar un webservice JSON con jQuery [Funciona!]
Este ejemplo asume que existe un webservice llamado wsX que retorna el siguiente string:
{ 'datos': [ {'nombre': 'Juan', 'direccion': 'Colonia 1212'}, {'nombre': 'Pedro', 'direccion': 'Mercedes 1111'} ] }
jQuery.ajax({
type: "POST",
url: http://X14/wsX/wsX.asmx/HelloWorld,
data: "{}",
contentType:"text",
dataType:"text",
cache: false,
success: function(response) {
var v = getJSON(response);
alert("Resultado: " + v.datos[0].nombre);
}
});
function getJSON(data)
{
var s;
s = data.substring(data.indexOf("{"));
s = s.substring(0, s.lastIndexOf("}") + 1);
return eval('(' + s + ')');
}
{ 'datos': [ {'nombre': 'Juan', 'direccion': 'Colonia 1212'}, {'nombre': 'Pedro', 'direccion': 'Mercedes 1111'} ] }
jQuery.ajax({
type: "POST",
url: http://X14/wsX/wsX.asmx/HelloWorld,
data: "{}",
contentType:"text",
dataType:"text",
cache: false,
success: function(response) {
var v = getJSON(response);
alert("Resultado: " + v.datos[0].nombre);
}
});
function getJSON(data)
{
var s;
s = data.substring(data.indexOf("{"));
s = s.substring(0, s.lastIndexOf("}") + 1);
return eval('(' + s + ')');
}
Utilizar eval para transformar texto a JSON
var data = "{ 'prueba': [ {'foo': 'The quick brown fox jumps over the lazy dog.' } ] }";
var v = eval('(' + data + ')');
alert("RESULTADO: " + v.prueba[0].foo);
var v = eval('(' + data + ')');
alert("RESULTADO: " + v.prueba[0].foo);
Obtener datos de un web service JSON con jQuery [Funciona!]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace Prueba1
{
/// <summary>
/// Descripción breve de Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente.
[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return (" [{\"nombre\":\"Juan\", \"direccion\":\"Colonia 1212\"}, {\"nombre\":\"Pedro\", \"direccion\":\"Mercedes 1111\"}] ");
}
}
}
jQuery:
<!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>
<script type="text/javascript" language="javascript" src="jquery-1.3.2.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba personas</title>
<body>
<script type="text/javascript">
$(document).ready(function()
{
$.ajax({
type: "POST",
url: "http://localhost:1485/Service1.asmx/HelloWorld",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function(response) {
var personas = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
for (var i = 0; i < personas.length; i++) {
alert(personas[i].nombre);
alert(personas[i].direccion);
}
}
});
});
</script>
</body>
</html>
Fuente:
http://www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace Prueba1
{
/// <summary>
/// Descripción breve de Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente.
[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return (" [{\"nombre\":\"Juan\", \"direccion\":\"Colonia 1212\"}, {\"nombre\":\"Pedro\", \"direccion\":\"Mercedes 1111\"}] ");
}
}
}
jQuery:
<!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>
<script type="text/javascript" language="javascript" src="jquery-1.3.2.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba personas</title>
<body>
<script type="text/javascript">
$(document).ready(function()
{
$.ajax({
type: "POST",
url: "http://localhost:1485/Service1.asmx/HelloWorld",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function(response) {
var personas = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
for (var i = 0; i < personas.length; i++) {
alert(personas[i].nombre);
alert(personas[i].direccion);
}
}
});
});
</script>
</body>
</html>
Fuente:
http://www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery
Suscribirse a:
Comentarios (Atom)